Pergunta

Eu tenho um uitabbarcontroller como parte do meu delegado de aplicativo e quero prender quando o usuário tocar uma guia específica (os favoritos) e forçar a tabela a recarregar os dados.

Qual seria a melhor prática neste caso?

Adicionei o protocolo UitabBardElegate ao meu delegado de aplicativos e implementei o método DIDSELHECTVIELCONTROLLER. Até agora tudo bem. Dentro do método, recebo um ViewController, para que eu possa verificar seu título, etc. para determinar qual guia está selecionada.

Como posso enviar uma mensagem Relloaddata para o UitableView no ViewController? Tentei criar um método na minha classe FavouritesViewController e chamar isso, mas não funciona.

Código de exemplo:

#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];
      }
   }
} 
Foi útil?

Solução

Parece que você precisa adicionar um [UITableView reloadData] para o TableViewController viewWillDisplay método. Isso fará com que a tabela recarregue toda vez que for exibida.

Se você deseja forçar uma recarga, o TableView já está exibido, ligar para recarregar do método que você criou no OP deve funcionar.

Outras dicas

A seguinte parte do código deve atualizar sua tabela cada vez A vista aparece.

-(void)viewWillAppear:(BOOL)animated
{
    [[self tableView] reloadData];
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top