2010-12-01 3 views
2

Ich habe eine UITableView. Auf Knopfdruck möchte ich meine benutzerdefinierte Ansicht anzeigen. Sobald die Ansicht sichtbar ist, entfernen Sie ein bestimmtes Element aus der Tabellenansicht. Die benutzerdefinierte Ansicht blendet die Tabellenansicht aus, sodass die Entfernung nach dem Anzeigen dieser neuen Ansicht erfolgen soll.Verzögerung reloadData auf UITableView

Derzeit habe ich diese, die die benutzerdefinierte Ansicht hinzugefügt und dann sollte das Element entfernen, und laden Sie die Tabelle neu, aber das Neuladen erfolgt genauso wie die Animation endet (ich habe einen Animationsblock, die Ansichten alpha ändern), So kann ich das Update sehen.

[self.view addSubview:customView]; 
[itemArray removeObject:object]; 
[self.tableView reloadData]; 

Wie kann ich das Nachladen verzögern, bis die Ansicht sichtbar ist?

Danke.

Antwort

1

Sie erwähnen Sie Animieren der Ansicht, selbst; Sie sollten reloadData nennen, wenn die Animation durch so etwas wie mit vervollständigt:

[UIView setAnimationDelegate:self]; 
[UIView setAnimationDidStopSelector:@selector(methodThatCallsReloadData)]; 

// or even 
[UIView setAnimationDelegate:self.tableView]; 
[UIView setAnimationDidStopSelector:@selector(reloadData)]; 

oder wenn Sie den Block-basierte API verwenden:

[UIView animateWithDuration:... completion:^(BOOL finished) { 
    [self.tableView reloadData]; 
}]; 
+0

Dank funktioniert dies sehr gut. Ich würde die Block-API bevorzugen, aber da es nur 4.0+ ist, werden meine 3.2 Benutzer abstürzen – joec

3

Versuchen Hinzufügen reload zu viewDidAppear:

-(void) viewDidAppear:(BOOL)animated { 
    [super viewDidAppear:animated]; 
    [self.tableView reloadData]; 
} 

Das sollte Ihnen die erforderliche Verzögerung geben.

1

oder Sie können die perform Methode verwenden:

[self performSelector:@selector(myOtherMethod) withObject:nil afterDelay:1.5];