我有一个从RootViewController以模态方式呈现的UITabBarController:
stvTabBarController = [[UITabBarController alloc] init];
stvTabBarController.delegate = self;
stvTabBarController.viewControllers = [NSArray arrayWithObjects:stvNavController, scheduleNavController, nil];
stvTabBarController.selectedViewController = stvNavController;
[self presentModalViewController:stvTabBarController animated:YES];
如何从stvNavController切换标签?我不能这样做:
self.tabBarController.selectedIndex = 3;
因为我没有对stvNavController中的tabBarController的引用。
答案 0 :(得分:0)
检查stvNavController的parentViewController
属性的值 - 它应该是对标签栏控制器的引用。
答案 1 :(得分:0)
正如我在代码中看到的那样,标签控制器下只有2个视图控制器。
您正试图选择第四个......
答案 2 :(得分:0)
1:添加UIApplicaition扩展
extension UIApplication {
/*function will return reference to tabbarcontroller */
func tabbarController() -> UIViewController? {
guard let vcs = self.keyWindow?.rootViewController?.childViewControllers else { return nil }
for vc in vcs {
if let _ = vc as? TabBarViewController {
return vc
}
}
return nil
}}
2:获取tabbarcontroller的引用
guard let tabbarController = UIApplication.shared.tabbarController() as? TabBarViewController else { return }
tabbarController.selectedIndex = 3