【问题标题】:Show two ViewController from AppDelegate从 AppDelegate 显示两个 ViewController
【发布时间】:2016-08-22 01:57:25
【问题描述】:

当 APP 启动时 - 启动 SigninView - 没关系。接下来如果成功 - 我需要 showTripController()。功能工作但没有显示?有什么问题?

func showSigninView() {
    let controller = self.window?.rootViewController!.storyboard?.instantiateViewControllerWithIdentifier("DRVAuthorizationViewController")
    self.window?.rootViewController!.presentViewController(controller!, animated: true, completion: nil)
}

func showTripController() {
    let cv = self.window?.rootViewController!.storyboard?.instantiateViewControllerWithIdentifier("DRVTripTableViewController")
    let nc = UINavigationController()
    self.window?.rootViewController!.presentViewController(nc, animated:true, completion: nil)
    nc.pushViewController(cv!, animated: true);
}

【问题讨论】:

    标签: ios swift uiviewcontroller appdelegate


    【解决方案1】:

    首先你必须在使用 window 之前添加这个:

    self.window.makeKeyAndVisible()
    

    要记住的另一件事是:

    有时 keyWindow 可能已被替换为具有 nil rootViewController 的窗口(在 iPhone 上显示 UIAlertViews、UIActionSheets 等),在这种情况下,您应该使用 UIView 的 window 属性。

    所以,不要使用 rootViewController,而是使用它提供的顶部:

    extension UIApplication {
        class func topViewController(base: UIViewController? = UIApplication.sharedApplication().keyWindow?.rootViewController) -> UIViewController? {
            if let nav = base as? UINavigationController {
                return topViewController(base: nav.visibleViewController)
            }
            if let tab = base as? UITabBarController {
                if let selected = tab.selectedViewController {
                    return topViewController(base: selected)
                }
            }
            if let presented = base?.presentedViewController {
                return topViewController(base: presented)
            }
            return base
        }
    }
    
    if let topController = UIApplication.topViewController() {
        topController.presentViewController(vc, animated: true, completion: nil)
    }
    

    【讨论】:

      【解决方案2】:

      将 showTripController 的最后 3 行替换为如下:

      let nc = UINavigationController(rootViewController: cv));
      self.window!.rootViewController = nc
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-11-11
        • 2018-02-27
        • 1970-01-01
        • 1970-01-01
        • 2013-08-26
        • 1970-01-01
        • 2012-10-10
        • 1970-01-01
        相关资源
        最近更新 更多