Swift ios检查哪个viewcontroller存在

时间:2016-11-09 17:07:32

标签: ios swift uiviewcontroller uinavigationcontroller

我想知道如何查看当前显示的视图控制器。

当用户重新发送通知并按下它时,我想将用户带到某个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 ...

1 个答案:

答案 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

enter image description here