2016-11-09 2 views
0

Интересно, как я могу проверить, какой контроллер отображения отображается в настоящее время.Swift ios проверить, какой viewcontroller присутствует

Когда пользователь получает уведомление и нажимает на него, я хочу передать пользователя в определенный 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, но в другом VC, чем EventVc?

И если это любая помощь мое приложение построено так:

(корень) TabBar

(Tab1) -> навигационный контроллер -> ВХ -> Vc ...

(tab2) -> навигационный контроллер -> ВХ -> ...

ВК

(tab3) -> навигационный контроллер -> ВХ -> ...

ВК

(tab4) -> навигационный контроллер -> ВХ - > vc ...

+0

сделал мой ответ решить вашу проблему? – emresancaktar

ответ

0

эта функция должна решить проблему, просто отправить индекс число в качестве аргумента (Forexample: 0 для tab1, 1 для tab2 и т.д.) на его борту вы selectedIndexViewController.

// 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 

Представлено ViewController;

let presentedVC = self.window?.rootViewController?.presentedViewController 

enter image description here

Смежные вопросы