2016-06-15 39 views
1

这是我的项目配置:DismissViewControllerAnimated解雇超过1个控制器

UINavigationController1 - >UIViewController1 - >UINavigationController2 - >UIViewController2 - >UIViewController3 - >UIViewController4

UIViewController4我做的: self.presentViewController(newController, animated: true, completion: nil)

当我在这个控制器完成我的工作时,我这样做: self.dismissViewControllerAnimated(true, completion: nil)

这最后一个动作不关闭只是newController并告诉我UIViewController4,但告诉我UIViewController1

随机别人的deinit{print("test")}UINavigationController1控制器被调用。

我只想关闭newController并显示UIViewController4

我不能推/控制器,因为这是一个库控制器,这是调用。

我该怎么办?下面的代码

+0

为什么你使用UINavigationController2,通过尝试只使用UINavigationController1,谢谢 –

+0

我使用第二个Navigatio nController,因为我使用了tabar。如果我删除了NavigationController2,我认为解雇会将我带到第一个应用程序控制器 – Robin

回答

0

用户到deismiss perticular视图

dispatch_async(dispatch_get_main_queue(), 
          { 
          if let topController = UIApplication.topViewController() 
          { 
           topController.dismissViewControllerAnimated(false, completion: nil) 
          } 
      }) 

对于下面的代码

if let topController = UIApplication.topViewController() { 
         print("From Super View \(topController)") 
        } 

检查超级视图控制器使用,并创建一个扩展

extension UIApplication { 

    class func topViewController(viewController: UIViewController? = UIApplication.sharedApplication().keyWindow?.rootViewController) -> UIViewController? { 
     if let nav = viewController as? UINavigationController { 
      return topViewController(nav.visibleViewController) 
     } 
     if let tab = viewController as? UITabBarController { 
      if let selected = tab.selectedViewController { 
       return topViewController(selected) 
      } 
     } 
     if let presented = viewController?.presentedViewController { 
      return topViewController(presented) 
     } 

     if let slide = viewController as? SlideMenuController { 
      return topViewController(slide.currentViewController) 
     } 
     return viewController 
    } 
} 
相关问题