如何获取UINavigationController的rootViewController

时间:2017-01-04 14:52:14

标签: ios swift rootviewcontroller

我想获得UINavigationController的rootViewController。它在Objective-c中工作,但是当我在Swift中使用它时,错误提醒我它是错误的。

Code screenshot 1

如果我这样做,添加as! NSArray,它有效,但也提醒我“从'[UIViewController]'转换为无关类型'NSArray'总是失败”。

Code screenshot 2

有人可以更好地获取`rootViewController``而不会出错。谢谢。

4 个答案:

答案 0 :(得分:26)

你可以通过

获得根
self.navigationController!.viewControllers.first

答案 1 :(得分:12)

或作为扩展名:

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

然后你就这样使用它:

if let rootv = navigationController?.rootViewController { }

答案 2 :(得分:2)

或许可以使用

self.navigationController.visibleViewController

self.navigationController.topViewController

答案 3 :(得分:0)

替换

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

let homevci = controllerArray.first as? NBHomeVC

let homevci = controllerArray[0] as? NBHomeVC