Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未选择iOS iPad情节提要_Ios_Iphone_Objective C_Xcode_Ipad - Fatal编程技术网

未选择iOS iPad情节提要

未选择iOS iPad情节提要,ios,iphone,objective-c,xcode,ipad,Ios,Iphone,Objective C,Xcode,Ipad,似乎Xcode 5没有选择在iPad设备上使用我的iPad情节提要,尽管我已经指定了它 这就是我告诉Xcode 5使用iPad情节提要的方式: 我在General 所选设备:Universal 然后我点击了iPad 并在主界面 但出于某种原因,即使我对我的MainStoryboard iPadstoryboard进行了更改,但当我尝试在iPad上运行它时,它并没有显示出来 我的项目中只有两个故事板 MainstryBoard-iPad.storyboard 及 故事板 你知道这里有什么问题吗

似乎Xcode 5没有选择在iPad设备上使用我的iPad情节提要,尽管我已经指定了它

这就是我告诉Xcode 5使用iPad情节提要的方式:

  • 我在
    General
  • 所选设备:
    Universal
  • 然后我点击了
    iPad
  • 并在
    主界面
但出于某种原因,即使我对我的
MainStoryboard iPad
storyboard进行了更改,但当我尝试在iPad上运行它时,它并没有显示出来

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

MainstryBoard-iPad.storyboard

故事板

你知道这里有什么问题吗

哦,顺便说一下,当我第一次选择Universal时,我收到一个盒子,问我一些关于复制的问题(我从来没有仔细阅读过)。我刚打了是的。不知道那个盒子到底做了什么

编辑

在我的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;
}

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

查看github上的此项目,了解无代码脚本切换的示例:


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

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

if (<your implementation>) {

    UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" 
                                                             bundle: nil];
    YourViewController *yourController = (YourViewController *)[mainStoryboard     
      instantiateViewControllerWithIdentifier:@"YourViewControllerID"];
    self.window.rootViewController = yourController;
}
要修复它,只需将实例化脚本的调用替换为一些逻辑,以便根据设备选择正确的脚本

UIStoryboard* storyboard;

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

您需要在应用程序的info.plist中输入iPad

在“支持文件”组中查找应用程序的info.plist

你会看到iPhone情节提要的条目,但不会看到iPad的条目

iPhone条目应如下所示:

Main storyboard file base name
iPhone-Storyboard
它应该有iPhone故事板的名称(sans文件扩展名)作为字符串值。大概是这样的:

Main storyboard file base name
iPhone-Storyboard
在pList中添加一个新条目,并输入此字符串作为键:

Main storyboard file base name (iPad)
确保数据类型为字符串

现在,您可以从目标应用程序的常规设置中选择所需的iPad情节提要

我也遇到了这个问题,我想你需要一个清晰的解释和解决方案


有时候,Xcode相当令人恼火,不是吗?希望这有帮助。

我刚才遇到了这个问题

以下是您需要执行的步骤:

  • 确保“部署信息”->设备是“通用的”
  • 为iPad创建情节提要(例如,MainstryBoard_iPad.storyboard)
  • 现在去你的情报室
  • 为“主情节提要文件基本名称(iPad)”添加行,并使用MainstryBoard_iPad作为字符串的值

  • 现在你可以走了

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

    if (<your implementation>) {
    
        UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" 
                                                                 bundle: nil];
        YourViewController *yourController = (YourViewController *)[mainStoryboard     
          instantiateViewControllerWithIdentifier:@"YourViewControllerID"];
        self.window.rootViewController = yourController;
    }
    
    if(){
    UIStoryboard*MainstryBoard=[UIStoryboard情节提要,名称:@“Main”
    束:零];
    YourViewController*yourController=(YourViewController*)[MainstryBoard
    实例化EviewController标识符:@“YourViewControllerID”];
    self.window.rootViewController=您的控制器;
    }
    

    返回YES

    您是否正在更改UI在AppDelegate中的显示方式?喜欢更改根视图控制器吗?啊。。。是的,我是!但不是在第一个屏幕上你能发布你的代码吗?可能有关联。在此处用相同的问题更新了问题。在Xcode 5.0.2中,在一个“通用”但只有iPhone情节提要的应用程序中,我添加了一个新的情节提要并选择了iPad。在常规目标设置中,我无法为iPad选择此情节提要-Xcode一直将其还原为iPhone情节提要。这真让人恼火。没有错误消息输出到控制台。序列图像板和Xcode项目旨在自动选择适当的序列图像板文件。这段代码根本不需要,完全可以接受他们在代码中所做的事情。我做了一些更简单的事情,他们应该关注的是他们为什么在
    applicationIDBECOMEACTIVE:
    中这样做,当然,这会起作用,应该在
    application:didfishLaunchingwithoptions:
    中。但是,最好让项目/情节提要配置来处理加载,特别是如果只需要不同的情节提要是因为不同的设备类型。除了在
    didfishlaunchingwithoptions:
    中使用它之外,这并不重要。如果在代码中选择
    @“mainStoryboard”
    ,它仍将执行其工作,并选择它正在运行的正确设备。当我这样做的时候,这对我来说非常好。因此,我建议您的答案需要有证据支持。我添加了一个自动处理情节提要选择的示例项目。