Domanda

Ho implementato un UIActivityIndicator che si presenta in una parte del mio programma, ma non un altro. Ho l'indicatore di attività di venire mentre io sono il caricamento di un tavolo, però, sto cercando di farlo per iniziare l'animazione di nuovo dopo che l'utente ha fatto clic su un pulsante ed è in attesa per il tavolo per ricaricare. Le ricariche tavolo, ma nessun indicatore. Ecco il codice.

- (void)viewWillAppear:(BOOL)animated {
    CGRect frame = CGRectMake (120.0, 185.0, 80, 80);
    activity = [[UIActivityIndicatorView alloc] initWithFrame: frame];
    activity.activityIndicatorViewStyle = UIActivityIndicatorViewStyleGray;
    [activity startAnimating];

    [navigationUpdateFromDetail.window addSubview: activity];

    [super viewWillAppear:animated];
}

Si viene in su per quella parte. Tuttavia, per la parte successiva che non vuole sembrare a venire.

- (IBAction) btnGreaterTen_clicked :(id)sender {

    self.searchDistance = [NSNumber numberWithDouble : 10];

    CGRect frame = CGRectMake (120.0, 185.0, 80, 80);

    activity = [[UIActivityIndicatorView alloc] initWithFrame: frame];
    activity.activityIndicatorViewStyle = UIActivityIndicatorViewStyleGray;

    [navigationUpdateFromDetail.window addSubview: activity];
    [activity startAnimating];


    NSLog(@" search value after change %@", [searchDistance description]);

    [self getSetDisplay];

    [activity stopAnimating];
}

Questo pulsante cambia una variabile e è supponiamo di avviare l'animazione, ma non è così. Ho cambiato il colore per assicurarsi che non era solo miscelazione, in modo che non è la soluzione. Ho cercato di ricreare lo stesso oggetto, ma ancora senza fortuna. Grazie in anticipo.

È stato utile?

Soluzione

Non funzionerà, perché l'animazione mostrerà solo quando il ciclo principale è "correre". Nel codice, si sta bloccando il thread principale chiamando [sé getSetDisplay].

Si dovrebbe caricare i dati in modo asincrono per fare questo lavoro (in un thread in background). Poi si può chiamare startAnimating , avviare il filo, e quando le finiture filo, interrompere l'animazione.

Altri suggerimenti

Questo è stato bugging me per anni, e ho appena scoperto che quando si utilizza una scheda video di ricerca ho dovuto aggiungere l'indicatore di attività come una visualizzazione secondaria dei risultati di ricerca per farlo da mostrare. Nel mio viewDidLoad, ho messo ...

// create activity indicator
activityIndicator = [[UIActivityIndicatorView alloc]initWithFrame:CGRectMake(0.0f, 0.0f, 32.0f, 32.0f)];
[activityIndicator setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleGray];
[self.searchDisplayController.searchResultsTableView addSubview:activityIndicator];

Quando ho voglia di iniziare l'animazione, ho messo ...

[activityIndicator setCenter:CGPointMake(self.searchDisplayController.searchResultsTableView.frame.size.width/2.0f, self.searchDisplayController.searchResultsTableView.frame.size.height/2.0f)];
[activityIndicator startAnimating];

Spero che questo aiuta qualcuno.

prova ad aggiungere

activity.hidden = NO;

appena prima di

[activity startAnimating];
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top