use*_*888 1 uitableview uitabbar ios swift
我有一个tableView到标签栏上的viewController.当我单击tabBar项时,tableView没有刷新.但是我有viewWillAppear函数:
override func viewWillAppear(animated: Bool) {
dispatch_async(dispatch_get_main_queue(), { () -> Void in
self.tableView.reloadData()
})
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用标签栏委托调用此函数,但不起作用:
func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) {
dispatch_async(dispatch_get_main_queue(), { () -> Void in
self.tableView.reloadData()
})
}
Run Code Online (Sandbox Code Playgroud)
为什么不重装?
谢谢!
您无需涉及标签栏控制器.这样做会有点矫枉过正.您将创建令人困惑的代码,以后有人会想要删除.更新表视图viewWillAppear(_:)几乎总是最好的方法.
如果一切设置正确,viewWillAppear(_:)每次用户选择该选项卡并且您的视图变得可见时,将调用视图控制器的方法.因此,如果它没有被调用,那么在标签栏及其视图控制器的设计中存在问题.
创建一个新项目,然后选择选项卡式应用程序模板.打开SecondViewController文件并添加viewWillAppear(_:)方法.在那里添加一个断点.每次切换到第二个选项卡时,都会看到它被调用.
其他一些想法......
你会在viewWillAppear(_:)文档中注意到它说你必须总是打电话给super.你不是.你应该.但这与你的问题无关.
此外,无需切换到主队列.viewWillAppear(_:)将始终在主队列上调用.
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
tableView.reloadData()
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9842 次 |
| 最近记录: |