UINavigationControllerのrootViewControllerを取得したい。 Objective-cで動作しますが、Swiftで使用すると、エラーが発生したため、エラーが発生しました。
これを行う場合は、as! NSArray
、動作しますが、「 '[UIViewController]'から無関係なタイプ 'NSArray'へのキャストは常に失敗する」ことも思い出させます。
誰かがエラーなしで `rootViewController``を取得するより良い方法を示すことができます。ありがとうございました。
ルートを取得するには、
self.navigationController!.viewControllers.first
または拡張機能として:
extension UINavigationController {
var rootViewController : UIViewController? {
return viewControllers.first
}
}
そして、次のように使用します。
if let rootv = navigationController?.rootViewController { }
または、これを使用することができます
self.navigationController.visibleViewController
または
self.navigationController.topViewController
取り替える
let homevci = controllerArray.objectAtIndex(0) as? NBHomeVC
と
let homevci = controllerArray.first as? NBHomeVC
または
let homevci = controllerArray[0] as? NBHomeVC