关于 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];

因为声明了UIWindowrootViewController 属性而无法编译 作为(通用)UIViewController(没有viewControllers 属性),而不是UINavigationController

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

因此,要么像在第一个代码块中那样继续,要么必须添加显式转换:

((UINavigationController *)self.window.rootViewController).viewControllers = @[firstPage];

【讨论】:

以上是关于关于 initWithNavigationBarClass 的困惑 - 如何使用(新的 instanceType 方法)的主要内容,如果未能解决你的问题,请参考以下文章

scrapy 关于 rule, 关于多页

JS学习笔记关于选项卡,关于this,关于innerHTML

关于唯典冰淇淋新闻页的布局

关于prototype.js的一些技术说明

主页链接发送到关于/关于页面无法回家

关于写作