我试图通过改变ViewController1ViewController2来从aselectedIndex变成atabBarController
在ViewController1中:

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

在ViewController2中:
class ViewController2: UIViewController {
   var isOnInfo = true
}

我的问题很简单。我想更改isOnInfo函数中action()的值。
有可能吗?
另一种方法是创建一个全局var,但如果我能避免这样做会更好。
谢谢你的回答。

最佳答案

我建议您在选项卡栏控制器中移动更改选项卡逻辑。
创建自己的类tab bar controller(UITabBarController的子类),将其设置为脚本中tab bar控制器的自定义类,并将函数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)
    }

10-07 19:49
查看更多