Перезагрузка данных в UITableView при нажатии UITabBarItem - PullRequest
2 голосов
/ 05 декабря 2009

У меня есть UITabBarController как часть моего делегата приложения, и я хочу перехватывать, когда пользователь касается определенной вкладки (избранное), и заставлять таблицу в ней перезагружать данные.

Что будет лучшей практикой в ​​этом случае?

Я добавил протокол UITabBarDelegate в мой делегат приложения и реализовал метод didSelectViewController. Все идет нормально. Внутри метода я получаю viewController, поэтому я могу проверить его заголовок и т. Д., Чтобы определить, какая вкладка выбрана.

Как я могу затем отправить сообщение reloadData в UITableView в viewController? Я попытался создать метод в своем классе FavouritesViewController и вызвать его, но он не работает.

Пример кода:

#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];
      }
   }
} 

Ответы [ 2 ]

3 голосов
/ 05 декабря 2009

Похоже, вам нужно добавить [UITableView reloadData] в метод tableViewController viewWillDisplay. Это приведет к перезагрузке таблицы при каждом ее отображении.

Если вы хотите принудительно выполнить перезагрузку, если представление таблицы уже отображается, то вызов перезагрузки из метода, созданного вами в OP, должен работать.

1 голос
/ 05 февраля 2013

Следующий фрагмент кода должен обновлять вашу таблицу каждый раз появляется представление.

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