2016-06-25 6 views
0

私はナビゲーションバーコントローラを持っています。いくつかのアクションの後、私は表示されたビューコントローラである新しいビューをポップアップする必要があります。では、どのようにしてトップビューを得るのですか?提示されたビューコントローラであるトップビューを取得する方法

ナビゲーションスタックで常にトップビューになりましたが、提示されたビューでは表示されません。どうして?

let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate 
    let aVariable = appDelegate.window 
    if let topController = aVariable!.visibleViewController() { 
     print(topController) 
    } 

答えて

1

トップのUIViewControllerは別のUIViewController提示してもらうために

if let topController = myNavigationController.visibleViewController { 
    print(topController) 
} 
0

スウィフト3例を試してみてください。

_ = UIApplication.shared.topVC?.present(yourViewController, animated: true) 

import UIKit 

extension UIApplication { 
    var topVC: UIViewController? { 
     get { 
      let rootVC = UIApplication.shared.keyWindow?.rootViewController 

      if let nav = rootVC as? UINavigationController { 
       return nav.visibleViewController 
      } else if let tab = rootVC as? UITabBarController, let selected = tab.selectedViewController { 
       return selected 
      } else if let presented = rootVC?.presentedViewController { 
       return presented 
      } 
      return rootVC 
     } 
    } 
} 

をして、それを呼び出すことができます

関連する問題