26

UINavigationController の rootViewController を取得したいです。Objective-c で動作しますが、 Swift で使用すると、エラーが間違っていたことを思い出させてくれます。

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

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

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

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

4

4 に答える 4

20

または拡張子として:

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

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

if let rootv = navigationController?.rootViewController { }
于 2017-01-04T14:59:53.360 に答える
0

交換

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

let homevci = controllerArray.first as? NBHomeVC

また

let homevci = controllerArray[0] as? NBHomeVC
于 2017-01-04T14:58:50.327 に答える