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

Confusion about initWithNavigationBarClass - how to use (new instanceType method)(关于 initWithNavigationBarClass 的困惑 - 如何使用(新的 instanceType 方法))

本文介绍了关于 initWithNavigationBarClass 的困惑 - 如何使用(新的 instanceType 方法)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这很好用:

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

但这确实有效:

but this does not work:

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

怎么可能?谢谢

推荐答案

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

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

does not compile because the rootViewController property of UIWindow is declared as a (generic) UIViewController (which does not have a viewControllers property), and not as a UINavigationController.

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

The compiler does not "know" that the root view controller is actually a navigation controller in your case.

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

So either you proceed as in your first code block, or you have to add an explicit cast:

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

这篇关于关于 initWithNavigationBarClass 的困惑 - 如何使用(新的 instanceType 方法)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:关于 initWithNavigationBarClass 的困惑 - 如何使用(新的 instanceType 方法)

基础教程推荐