Frage

Ich habe einen UitabbarController als Teil meines App -Delegiertens und möchte fangen, wenn der Benutzer eine bestimmte Registerkarte (die Favoriten) berührt und die Tabelle darin erzwingt, um die Daten neu zu laden.

Was wäre in diesem Fall Best Practice?

Ich habe mein App -Delegierter das Uitabbardelegate -Protokoll hinzugefügt und die DidselectViewController -Methode implementiert. So weit, ist es gut. In der Methode erhalte ich einen ViewController, damit ich den Titel usw. überprüfen kann, um zu bestimmen, welche Registerkarte ausgewählt ist.

Wie kann ich dann eine Reloaddata -Nachricht an die UitableView im ViewController senden? Ich habe versucht, eine Methode in meiner FauritesViewController -Klasse zu erstellen und diese anzurufen, aber sie funktioniert nicht.

Beispielcode:

#pragma mark UITabBarController delegate methods

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
   // If the favourites tab is pressed then reload the data
   if (viewController.title = @"Favourites")
   {
      if ([viewController respondsToSelector:@selector(reloadFavourites:)]) 
      {
         [viewController reloadFavourites];
      }
   }
} 
War es hilfreich?

Lösung

Es hört sich so an, als müssten Sie a hinzufügen [UITableView reloadData] zum TableViewController's viewWillDisplay Methode. Dies führt dazu, dass die Tabelle jedes Mal neu lädt, wenn sie angezeigt wird.

Wenn Sie ein Reload erzwingen möchten, wird die Tabellenansicht bereits angezeigt, dann sollte das Aufrufen von Reload aus der im OP erstellten Methode funktionieren.

Andere Tipps

Das folgende Code sollte Ihre Tabelle aktualisieren jedes Mal Die Ansicht erscheint.

-(void)viewWillAppear:(BOOL)animated
{
    [[self tableView] reloadData];
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top