【问题标题】:How to load different nib for iPad?如何为 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 条件之外设置根视图控制器,它应该可以正常工作。
  • 将视图正确添加到窗口,但不会将窗口添加到导航控制器。

标签: ios iphone objective-c ipad nib


【解决方案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 作为窗口和导航控制器。我不确定如何在代码中覆盖它们。
猜你喜欢
  • 1970-01-01
  • 2012-03-16
  • 2016-11-30
  • 1970-01-01
  • 2012-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多