iOS iPad故事板未被选中

时间:2014-01-13 15:07:21

标签: ios iphone objective-c xcode ipad

似乎Xcode 5并没有选择将我的iPad故事板用于iPad设备,即使我指定了它。

这就是我告诉Xcode 5使用iPad故事板的方式:

  • 我去了General
  • 下的项目设置
  • 所选设备:Universal
  • 然后我点击了iPad
  • 并在MainStoryboard-iPad.storyboard
  • 中写了Main Interface

但出于某种原因,即使我对我的MainStoryboard-iPad故事板进行了更改,但当我尝试在iPad上运行时,它还没有显示出来。

我的项目中只有两个故事板

  

MainStoryboard-iPad.storyboard

  

MainStoryboard.storyboard

任何想法在这里可能出错?

哦顺便说一下,当我选择环球时,我第一次拿到一个盒子问我有关复制的事情(我从未仔细阅读过)。我只是点击了。不确定那个盒子究竟做了什么。

修改

在我的AppDelegate.m中运行的代码

- (void)applicationDidBecomeActive:(UIApplication *)application {
        AppDelegate *app = [[UIApplication sharedApplication] delegate];
        UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
        UIViewController *ivc = [storyboard instantiateViewControllerWithIdentifier:@"mainStoryBoard"];

        UINavigationController *nvc = (UINavigationController*)self.window.rootViewController;
        app.window.rootViewController = ivc;
}

5 个答案:

答案 0 :(得分:3)

我刚刚遇到这个。

这是您需要执行的步骤:

  1. 确保“部署信息” - >设备是“通用”
  2. 为iPad创建故事板(例如)MainStoryboard_iPad.storyboard
  3. 现在转到您的Infor.plist
  4. 为“主故事板文件基本名称(iPad)”添加行,并使用MainStoryboard_iPad作为字符串的值
  5. 现在你很高兴!!!“

    希望这有帮助! Godbless

答案 1 :(得分:1)

您的代码会覆盖设备类型的默认情节提要。您正在抓取MainStoryboard,从中实例化视图控制器并将其设置为根。这通常由故事板本身处理。它使用您选择的视图控制器作为根。尝试删除所有代码以手动设置故事板。

在github上检查此项目,以获取没有代码的故事板切换示例:https://github.com/danielmackenzie/StoryboardSelection

Xcode项目指向每个设备类型的每个故事板,并在启动时自动选择相应的板。

答案 2 :(得分:0)

您需要在应用的info.plist

中输入iPad

在支持文件组中查找适用于您应用的info.plist。

您会看到iPhone的故事板条目,但不是iPad的条目。

iPhone条目应如下所示:

Main storyboard file base name

它应该有你的iPhone的故事板(无文件扩展名)的名称作为它的字符串值。像这样:

iPhone-Storyboard

在pList中添加一个新条目并输入该字符串作为键:

Main storyboard file base name (iPad)

确保数据类型为字符串。

您现在可以从目标应用的常规设置中选择所需的iPad故事板。

我也试过这个,并且认为你想要一个明确的解释和解决方案。

有时,Xcode令人抓狂,不是吗?希望这会有所帮助。

答案 3 :(得分:0)

//在应用程序启动后覆盖自定义点。

if (<your implementation>) {

    UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" 
                                                             bundle: nil];
    YourViewController *yourController = (YourViewController *)[mainStoryboard     
      instantiateViewControllerWithIdentifier:@"YourViewControllerID"];
    self.window.rootViewController = yourController;
}

返回YES;

答案 4 :(得分:-1)

您的逻辑没有考虑您的设备。 AFAIK,没有方法可以查看命名后缀(“-iPad”)并自动选择正确的故事板文件。

要解决此问题,只需将调用替换为使用某种逻辑实例化故事板,以根据设备选择正确的故事板。

UIStoryboard* storyboard;

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
{
    storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard-iPad" bundle:nil];
} else 
{
    storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
}