gpt4 book ai didi

ios - 如何在点击 tabBar 项目 Swift 上刷新 tableView?

转载 作者:搜寻专家 更新时间:2023-11-01 05:53:48 25 4
gpt4 key购买 nike

我在选项卡栏上有一个 tableView 到 viewController。当我点击 tabBar 项目时,tableView 没有刷新。但是我有 viewWillAppear 函数:

 override func viewWillAppear(animated: Bool) {
dispatch_async(dispatch_get_main_queue(), { () -> Void in
self.tableView.reloadData()
})
}

我正在尝试使用标签栏委托(delegate)调用此函数,但不起作用:

 func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) {
dispatch_async(dispatch_get_main_queue(), { () -> Void in
self.tableView.reloadData()
})
}

为什么不重新加载?

谢谢!

最佳答案

您不需要在此涉及标签栏 Controller 。这样做就太过分了。您将创建令人困惑的代码,以后有人会想要将其删除。在 viewWillAppear(_:) 中更新 TableView 几乎总是最好的方法。

如果一切设置正确,每次用户选择该选项卡并且您的 View 变为可见时,您的 View Controller 的 viewWillAppear(_:) 方法将被调用。因此,如果它没有被调用,则说明您的选项卡栏及其 View Controller 的设计某处存在问题。

创建一个新项目并选择选项卡式应用程序模板。打开 SecondViewController 文件并添加 viewWillAppear(_:) 方法。在那里添加一个断点。每次切换到第二个选项卡时,您都会看到它被调用。

一些其他的想法...

您会在 viewWillAppear(_:) 文档中注意到它说您必须始终调用 super。你不。你应该。但这与您的问题无关。

此外,无需切换到主队列。 viewWillAppear(_:) 将始终在主队列上调用。

override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
tableView.reloadData()
}

关于ios - 如何在点击 tabBar 项目 Swift 上刷新 tableView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33332861/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com