Domanda

Ho un UITabBarController come parte della mia app delegato e voglio trappola quando l'utente tocca una scheda specifica (i favoriti) e la forza della tabella all'interno di esso per ricaricare i dati.

Che cosa sarebbe le migliori pratiche in questo caso?

Ho aggiunto il protocollo UITabBarDelegate alla mia app delegato e implementato il metodo didSelectViewController. Fin qui tutto bene. All'interno del metodo ho un viewController, in modo da poter controllare il suo titolo, ecc per determinare quale scheda selezionata.

Come posso quindi inviare un messaggio reloadData al UITableView nel viewController? Ho cercato di creare un metodo nella mia classe FavouritesViewController e chiamare questo, ma non funziona.

Esempio di codice:

#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];
      }
   }
} 
È stato utile?

Soluzione

Sembra che tu abbia bisogno di aggiungere un [UITableView reloadData] metodo viewWillDisplay del tableViewController. Questo farà sì che la tabella per ricaricare ogni volta che viene visualizzato.

Se si vuole forzare un ricaricamento verrà tableView è già visualizzato, quindi chiamando ricarica dal metodo creato nel PO dovrebbe funzionare.

Altri suggerimenti

Il seguente frammento di codice dovrebbe aggiornare la vostra tabella di appare la vista ogni singola volta.

-(void)viewWillAppear:(BOOL)animated
{
    [[self tableView] reloadData];
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top