Перезагрузка данных в UITableView при нажатии UITabBarItem
-
13-09-2019 - |
Вопрос
У меня есть UITabBarController как часть моего делегата приложения, и я хочу перехватывать, когда пользователь касается определенной вкладки (избранное), и заставлять таблицу внутри нее перезагружать данные.
Какова была бы наилучшая практика в данном случае?
Я добавил протокол UITabBarDelegate в свой делегат приложения и реализовал метод didSelectViewController.Пока все идет хорошо.В рамках метода я получаю ViewController, поэтому я могу проверить его заголовок и т.д.чтобы определить, какая вкладка выбрана.
Как я могу затем отправить сообщение reloadData в UITableView в ViewController?Я попытался создать метод в моем классе FavoritesViewController и вызвать его, но он не работает.
Пример кода:
#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];
}
}
}
Решение
Похоже, вам нужно добавить [UITableView reloadData]
к TableViewController viewWillDisplay
способ.Это приведет к перезагрузке таблицы при каждом ее отображении.
Если вы хотите принудительно выполнить перезагрузку, если tableview уже отображается, то вызов reload из метода, который вы создали в OP, должен сработать.
Другие советы
Следующий фрагмент кода должен обновить вашу таблицу каждый раз, когда появится вид.
-(void)viewWillAppear:(BOOL)animated
{
[[self tableView] reloadData];
}