未选择iOS iPad情节提要
似乎Xcode 5没有选择在iPad设备上使用我的iPad情节提要,尽管我已经指定了它 这就是我告诉Xcode 5使用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 及 故事板 你知道这里有什么问题吗
- 我在
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相当令人恼火,不是吗?希望这有帮助。我刚才遇到了这个问题 以下是您需要执行的步骤:
现在你可以走了 //应用程序启动后的自定义覆盖点
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”
,它仍将执行其工作,并选择它正在运行的正确设备。当我这样做的时候,这对我来说非常好。因此,我建议您的答案需要有证据支持。我添加了一个自动处理情节提要选择的示例项目。