2

我有一个 UITabBarController 作为我的应用程序委托的一部分,我想在用户触摸特定选项卡(收藏夹)时进行捕获并强制其中的表重新加载数据。

在这种情况下,最佳做法是什么?

我已将 UITabBarDelegate 协议添加到我的应用程序委托并实现了 didSelectViewController 方法。到现在为止还挺好。在该方法中,我获得了一个 viewController,因此我可以检查其标题等以确定选择了哪个选项卡。

然后如何向 viewController 中的 UITableView 发送 reloadData 消息?我尝试在我的 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];
      }
   }
} 
4

2 回答 2

3

听起来您需要[UITableView reloadData]在 tableViewController 的viewWillDisplay方法中添加一个。这将导致表格在每次显示时重新加载。

如果您想强制重新加载表格视图是否已经显示,那么从您在 OP 中创建的方法调用重新加载应该可以工作。

于 2009-12-05T14:23:57.177 回答
1

以下代码应在每次视图出现时刷新您的表。

-(void)viewWillAppear:(BOOL)animated
{
    [[self tableView] reloadData];
}
于 2013-02-05T00:37:32.473 回答