Swift - 使用selectedIndex

时间:2018-06-11 20:15:20

标签: ios swift swift3 delegates

我试图通过更改ViewController1的{​​{1}}来尝试从ViewController2转到selectedIndex

在ViewController1中:

tabBarController

在ViewController2中:

func action() {
   _ = self.tabBarController?.selectedIndex = 4
}

我的问题非常简单。我想更改class ViewController2: UIViewController { var isOnInfo = true } 函数中isOnInfo的值。 有可能吗?

另一种方法是创建一个全局变量,但如果我可以避免它会更好。

谢谢你的答案。

2 个答案:

答案 0 :(得分:1)

我建议您在Tab栏控制器中移动更改标签逻辑。 创建自己的类TabBarController(UITabBarController的子类),将它设置为storyBoard中标签栏控制器的自定义类,并在那里移动函数action()。

import UIKit

class TabBarController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    func action(isOnInfo: Bool) {
        selectedIndex = 4
        if let viewControllers = self.viewControllers,
            let viewController2 = viewControllers[selectedIndex] as? ViewController2 {
            viewController2.isOnInfo = isOnInfo
        }
    }
}

然后在viewController1:

if let tabBarController = self.tabBarController as? TabBarController {
        tabBarController.action(isOnInfo: false)
    }

答案 1 :(得分:0)

您可以在tabbarcontroller中的选定索引处获取viewcontroller的对象。一旦拥有它,您可以修改任何公共财产。

     func action() { 

   _ = self.tabBarController?.selectedIndex = 4

     if let vc2  = self.tabBarController?.viewControllers![4]  as?  
     ViewController2
               {

                   vc2.isOnInfo = true  
               }
    }