关于initWithNavigationBarClass的困惑 - 如何使用(new instanceType方法)

时间:2014-03-09 18:21:15

标签: ios uinavigationcontroller instancetype

这很有效:

UINavigationController *nc =
    [[UINavigationController alloc]
    initWithNavigationBarClass:[GTScrollNavigationBar class]
    toolbarClass:[UIToolbar class]];
nc.viewControllers = @[firstPage];
self.window.rootViewController = nc;

工作:

UINavigationController *nc =
    [[UINavigationController alloc]
    initWithNavigationBarClass:[GTScrollNavigationBar class]
    toolbarClass:[UIToolbar class]];
self.window.rootViewController = nc;
self.window.rootViewController.viewControllers = @[firstPage]; // ERROR

怎么会这样?感谢

1 个答案:

答案 0 :(得分:2)

self.window.rootViewController.viewControllers = @[firstPage];

未编译,因为声明了rootViewController的{​​{1}}属性 作为(通用)UIWindow(没有UIViewController属性),而不是viewControllers

编译器不“知道”根视图控制器实际上是导航 在你的情况下控制器。

所以要么你在第一个代码块中继续,要么你必须添加一个显式的强制转换:

UINavigationController