如何为 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

不同设备的不同笔尖

加载不同的 Nib 文件

如何为自定义 UITableView 标题部分笔尖添加分隔线? [复制]

如何为 ipad 设计应用程序 [关闭]

iphone 应用程序错误地包括 ipad 笔尖