关于 initWithNavigationBarClass 的困惑 - 如何使用(新的 instanceType 方法)
Posted
技术标签:
【中文标题】关于 initWithNavigationBarClass 的困惑 - 如何使用(新的 instanceType 方法)【英文标题】:Confusion about initWithNavigationBarClass - how to use (new instanceType method) 【发布时间】:2014-03-09 18:21:15 【问题描述】:这很好用:
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】:self.window.rootViewController.viewControllers = @[firstPage];
因为声明了UIWindow
的rootViewController
属性而无法编译
作为(通用)UIViewController
(没有viewControllers
属性),而不是UINavigationController
。
编译器并不“知道”根视图控制器实际上是一个导航 控制器在你的情况下。
因此,要么像在第一个代码块中那样继续,要么必须添加显式转换:
((UINavigationController *)self.window.rootViewController).viewControllers = @[firstPage];
【讨论】:
以上是关于关于 initWithNavigationBarClass 的困惑 - 如何使用(新的 instanceType 方法)的主要内容,如果未能解决你的问题,请参考以下文章