似乎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;
}
答案 0 :(得分:3)
我刚刚遇到这个。
这是您需要执行的步骤:
希望这有帮助! 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];
}