我试图通过更改ViewController1
的{{1}}来尝试从ViewController2
转到selectedIndex
。
在ViewController1中:
tabBarController
在ViewController2中:
func action() {
_ = self.tabBarController?.selectedIndex = 4
}
我的问题非常简单。我想更改class ViewController2: UIViewController {
var isOnInfo = true
}
函数中isOnInfo
的值。
有可能吗?
另一种方法是创建一个全局变量,但如果我可以避免它会更好。
谢谢你的答案。
答案 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
}
}