如何为 iPad 加载不同的笔尖?
Posted
技术标签:
【中文标题】如何为 iPad 加载不同的笔尖?【英文标题】:How to load different nib for iPad? 【发布时间】:2014-05-26 22:07:10 【问题描述】:当我的应用在 iPad 上运行时,我想为我的根视图加载不同的 .xib。正如您从下面的代码中看到的那样,我尝试执行此操作,但是发生的情况是线程进入了正确的 if 语句,因此它识别出它是 iPad,但是当视图加载时,它会加载 iPhone 版本的视图。
这是我的代码,我试图在应用程序委托中决定为 rootView 加载哪个 nib:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
//Add status bar
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationFade];
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
self.window.rootViewController = [[RootViewController alloc] initWithNibName:@"RootViewControlleriPad" bundle:nil];
else
self.window.rootViewController = [[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil];
self.window.rootViewController = self.navigationController; //Adds RootViewController to the NavigationController interface
self.navigationController.navigationBar.titleTextAttributes = @NSForegroundColorAttributeName : [UIColor whiteColor]; // navigation titles
self.navigationController.navigationBar.tintColor = [UIColor whiteColor]; // navigation buttons
【问题讨论】:
你注意到你的代码了吗,你一直在两个不同的地方设置根视图控制器。如果您删除代码以在 if else 条件之外设置根视图控制器,它应该可以正常工作。 将视图正确添加到窗口,但不会将窗口添加到导航控制器。 【参考方案1】:你需要重做这一行:
self.window.rootViewController = self.navigationController; //Adds RootViewController to the NavigationController interface
这是什么弄乱了你的结果。
【讨论】:
我试过这个 [self.window setRootViewController:self.window.rootViewController]; 效果很好! 抱歉,[self.window setRootViewController:self.window.rootViewController];
确实没有按照您的想法行事。仔细阅读该作业。
可能是这样写的:[self.window setRootViewController:[self.window rootViewController]];
?
如果我理解您正在尝试正确执行的操作,您希望从一开始就拥有一个导航控制器。因此,以编程方式创建导航控制器,将特定设备的 RootViewController 设置为导航控制器的根(或初始)视图,然后将窗口的根视图设置为导航控制器。
是的,总结一下。我现在要做一些研究。事情是在 MainWindow.xib 我已经在它们中添加了窗口和导航控制器。所以我使用 IBOutlet 作为窗口和导航控制器。我不确定如何在代码中覆盖它们。以上是关于如何为 iPad 加载不同的笔尖?的主要内容,如果未能解决你的问题,请参考以下文章
如何为 didSelectRowAtIndexPath 中的选定笔尖单元触发某些 segue