点击tabBar时刷新tableView
Posted
技术标签:
【中文标题】点击tabBar时刷新tableView【英文标题】:Refresh the tableView when clicking on the tabBar 【发布时间】:2011-01-09 23:07:50 【问题描述】:当我单击 tabBar 中的相关按钮时,我只想刷新我的 tableView(在 iPhone 上)...
所以,我认为必须这样做:
[self.tableView reloadData];
对吗?并在
中完成(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
但我不知道如何从 tabBar 控制器将消息 reloadData 发送到 tableView... 你能帮帮我吗?
【问题讨论】:
【参考方案1】:在您的UITableViewController
类中,实现viewWillAppear
方法并从那里调用reloadData
。
【讨论】:
工作正常(再次感谢;))但是如果我想在点击相关的 tabBar 按钮时刷新 tableView,即使我已经在 tableView 中? (也就是说,使用tabBar按钮作为刷新按钮) 在 v3.0 及更高版本的 SDK 中,您可以通过实现UITabBarControllerDelegate
类(某处)并响应 - (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
方法来完成此操作。在 v3.0 及以下版本中,这是不可能的,因为除非所选视图控制器实际发生更改,否则不会调用该方法。
哦,并相应地设置UITabBarController
的delegate
属性。
是的,这是我的第一个想法(在问题中),但我(很可能很简单)的问题是如何访问我的实际 viewController 的方法。 (因为参数 viewController 不响应方法调用)谢谢 :)
从tabBarController:didSelectViewController:
中手动调用viewWillAppear
方法,而后者又会调用其表的reloadData
方法。或者在你的viewController
中设置一个虚拟方法,它只调用reloadData
并且什么都不做。或者在委托的方法中将viewController
转换为UITableViewController
(如果没有这个,它仍然会响应选择器,例如[[viewController tableView] reloadData]
)。以上是关于点击tabBar时刷新tableView的主要内容,如果未能解决你的问题,请参考以下文章