我想知道如何查看当前显示的视图控制器。
当用户重新发送通知并按下它时,我想将用户带到某个VC。但只有当用户不在时。
当我收到通知时,我正在使用它:
if let tabBarController = self.window!.rootViewController as? CustomTabBarController {
let navInTab:UINavigationController = tabBarController.viewControllers?[0] as! UINavigationController
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let destinationViewController = storyboard.instantiateViewController(withIdentifier: "EventVc") as? EventsViewController
navInTab.pushViewController(destinationViewController!, animated: true)
tabBarController.selectedIndex = 0
}
如果用户已经在 EventVc
,我不想运行此代码另外,如果用户已经在标签0 但是在与EventVc不同的VC中,我可以运行上面的代码吗?
如果有任何帮助我的应用程序是这样构建的:
(root)TabBar
(tab1) - >导航控制器 - > vc - > VC ...
(tab2) - >导航控制器 - > vc - > VC ...
(tab3) - >导航控制器 - > vc - > VC ...
(tab4) - >导航控制器 - > vc - > VC ...
答案 0 :(得分:0)
这个函数可以解决你的问题,只需发送索引数字作为参数(例如:0代表tab1,1代表tab2等) at it导航你{{ 1}} selectedIndex
。
ViewController
你可以找到像这样的呈现ViewController ;
// Navigation TabIndex TabBar View Controller
fileprivate func goTabIndex(index: Int) {
let storyboard = UIStoryboard(name: "yourTabbarStoryboardID", bundle: nil)
let tabBarController = storyboard.instantiateViewController(withIdentifier: "EventVc") as! UITabBarController
tabBarController.selectedIndex = index
self.window?.makeKeyAndVisible()
DispatchQueue.main.async {
self.window?.rootViewController?.present(tabBarController, animated: false)
}
}
呈现ViewController;
let presentingVC = self.window?.rootViewController?.presentingViewController