将数据从标签栏控制器传输到 ViewController
Transfer data from tab bar controller to ViewController
我有一个典型的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 提供给他使用?
你想要做的是,在你的 ViewController
class.
中添加一个名为 number
或任何你喜欢的 属性
class ViewController: UIViewController {
var number: Int!
}
然后在 tabBarController 的 viewDidLoad
中,遍历视图控制器,检查它们是否是 ViewController
类型,然后将它们的 number
属性 设置为索引tabBarController 的视图控制器:
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)
}
}
}
除非,您要在每次选择标签时设置该值吗?
我有一个典型的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 提供给他使用?
你想要做的是,在你的 ViewController
class.
number
或任何你喜欢的 属性
class ViewController: UIViewController {
var number: Int!
}
然后在 tabBarController 的 viewDidLoad
中,遍历视图控制器,检查它们是否是 ViewController
类型,然后将它们的 number
属性 设置为索引tabBarController 的视图控制器:
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)
}
}
}
除非,您要在每次选择标签时设置该值吗?