web-dev-qa-db-ja.com

UINavigationControllerのrootViewControllerを取得するにはどうすればよいですか

UINavigationControllerのrootViewControllerを取得したい。 Objective-cで動作しますが、Swiftで使用すると、エラーが発生したため、エラーが発生しました。

コードスクリーンショット1

これを行う場合は、as! NSArray、動作しますが、「 '[UIViewController]'から無関係なタイプ 'NSArray'へのキャストは常に失敗する」ことも思い出させます。

コードスクリーンショット2

誰かがエラーなしで `rootViewController``を取得するより良い方法を示すことができます。ありがとうございました。

18
Remsay

ルートを取得するには、

self.navigationController!.viewControllers.first
27
user6083088

または拡張機能として:

extension UINavigationController {
    var rootViewController : UIViewController? {
        return viewControllers.first
    }
}

そして、次のように使用します。

if let rootv = navigationController?.rootViewController { }
14
Bogdan Farca

または、これを使用することができます

self.navigationController.visibleViewController

または

self.navigationController.topViewController
2
moonvader

取り替える

let homevci = controllerArray.objectAtIndex(0) as? NBHomeVC

let homevci = controllerArray.first as? NBHomeVC

または

let homevci = controllerArray[0] as? NBHomeVC
0
Sameh Salama