关于 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 方法)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Why local notification is not firing for UNCalendarNotificationTrigger(为什么没有为UNCalendarNotificationTrigger触发本地通知)
iOS VoiceOver functionality changes with Bundle Identifier(IOS画外音功能随捆绑包标识符而变化)
tabbar middle tab out of tabbar corner(选项卡栏中间的选项卡角外)
Pushing UIViewController above UITabBar(将UIView控制器推送到UITabBar上方)
How can I sync two flatList scroll position in react native(如何在本机Reaction中同步两个平面列表滚动位置)
Get an event when UIBarButtonItem menu is displayed(显示UIBarButtonItem菜单时获取事件)