我试图通过改变ViewController1
的ViewController2
来从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)
}