我有以下问题。我使用的是 TabBarController
,周一到周五的每一天都有 5 个不同的选项卡。
每个选项卡只需要一个 TableView
来显示一些信息,具体取决于当前选定的选项卡(也就是一天)。
我为每个选项卡使用相同的 ViewController
。我正在使用以下方法
func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController)
检测当前标签栏索引并加载数据以显示在表格中。在我看来,此方法还会更新变量 currentDay
,该变量用于检索要显示的正确数据。
下面是我用来获取此类数据的代码。
let retrieveOrariofromCoreData = CoreDataController.sharedIstanceCData.load(currentDay)
self.arrayTimes = retrieveOrariofromCoreData
if (self.arrayTimes?.isEmpty)! {
Utils.setPlaceholderForEmptyTable(self, message: "...")
} else {
self.tableView.reloadData()
self.tableView.isHidden = false
}
问题是我将这段代码放在viewDidLoad
或viewWillAppear
方法中,该方法在更改变量的tabBarController
之前执行 当前日期
。
也许我的方法有点简陋。我想找到一种更简单优雅的方法来做到这一点。
最佳答案
我不知道你什么时候改变你的 currentDay
变量。我刚刚用 UITabBarControllerDelegate
s tabBar:didSelect:
测试了它,它在加载 viewController 之前执行。
我的测试代码如下所示:
var index = 0
override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
index = (self.tabBar.items?.index(of: item)) ?? 0
}
然后在 viewDidLoad
和 viewDidAppear
的 viewController 中:
print("loaded \((self.tabBarController as? TabViewController)?.index ?? 0)")
它总是给我正确的索引。
关于ios - 在 TabBarController 中使用相同的 ViewController 和 TableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44117492/