26

我想获取 UINavigationController 的 rootViewController。它在 Objective-c 中有效,但是当我在 Swift 中使用它时,错误提醒我这是错误的。

代码截图 1

如果我这样做,添加as! NSArray,它可以工作,但也提醒我“从 '[UIViewController]' 转换为不相关类型 'NSArray' 总是失败”。

代码截图2

有人可以展示一个更好的方法来获得 `rootViewController` 而不会出错。谢谢你。

4

4 回答 4

44

你可以通过以下方式获得根,

self.navigationController!.viewControllers.first
于 2017-01-04T14:58:10.030 回答
20

或作为扩展:

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

然后你像这样使用它:

if let rootv = navigationController?.rootViewController { }
于 2017-01-04T14:59:53.360 回答
4

或者也许可以使用

self.navigationController.visibleViewController

或者

self.navigationController.topViewController
于 2018-02-28T07:26:24.917 回答
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 回答