我有一个典型的ViewController:
class ViewController: UIViewController{
override func viewDidLoad() {}
}
我还有TabBarController,它向我显示当前场景的编号:
class TabBarController: UITabBarController {
override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem!) {
if item == (self.tabBar.items as! [UITabBarItem])[0]{
print(1)
}
else if item == (self.tabBar.items as! [UITabBarItem])[1]{
print(2)
}
}
}
我需要ViewController知道其场景编号。 (1或2)。我该如何从TabBarController传递给他此号码?
答案 0 :(得分:1)
您想要做的是,将number
或任何您喜欢的属性添加到ViewController
类中。
class ViewController: UIViewController {
var number: Int!
}
然后在tabBarController的viewDidLoad
中循环遍历视图控制器,检查它们是否为ViewController
类型,然后将其number
属性设置为tabBarController的视图控制器的索引:< / p>
class TabBarController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
for (index,vc) in (viewControllers!.enumerated())! {
if let viewController = vc as? ViewController {
vc.number = index
}
}
}
override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem!) {
if item == (self.tabBar.items as! [UITabBarItem])[0]{
print(1)
}
else if item == (self.tabBar.items as! [UITabBarItem])[1]{
print(2)
}
}
}
除非您选择了选项卡,否则是否要设置该值?