iPad 模拟器/设备使用 iPhone 故事板

Posted

技术标签:

【中文标题】iPad 模拟器/设备使用 iPhone 故事板【英文标题】:iPad simulator/device uses iPhone storyboard 【发布时间】:2013-03-19 14:59:12 【问题描述】:

所以我创建了一个适用于 iPhone 的应用程序,我想将其转换为 iPad,按照此answer 中的步骤操作。

复制您的 iPhone 故事板并将其重命名为 MainStoryboard_iPad.storyboard

使用任何文本编辑器打开此文件。

搜索 targetRuntime="ios.CocoaTouch" 并将其更改为 targetRuntime="iOS.CocoaTouch.iPad"

现在保存所有内容并重新打开 Xcode -> iPad 故事板包含与 iPhone 文件相同的内容,但所有内容都可能杂乱无章

一切都正确完成,但 iPad 模拟器/设备无论如何都使用 iPhone 故事板。有什么建议吗?

我在摘要->ipad 部署信息->主故事板中设置了 iPad 故事板。并且 main.plist-> Main storyboard file base name (iPad) 设置为 iPad storyboard。

请告诉我我错过了什么。

UPD。有趣的是,当我从 ipad 部署信息中删除 iPad 故事板名称时,它仍然在设备上使用我的 iPhone 故事板。

【问题讨论】:

Xcode 使用 iPhone 故事板是什么意思?当你为 iPad 模拟器构建时,它仍然使用 iPhone 故事板? 是的,ipad 模拟器/设备使用 iPhone 模拟器 在 iOS Application Target 下,Devices 是否设置为 Universal? 是的,应用程序目标设置为通用 【参考方案1】:

您总是可以在 appDelegate 中选择合适的故事板并以编程方式呈现合适的根视图控制器

@interface AppDelegate : UIResponder <UIApplicationDelegate>

    UIViewController *rvc;

实施

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
       UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"IPAD_Storyboard" bundle:nil];
       rvc = [storyboard instantiateViewControllerWithIdentifier:@"identifierForController"];
    
    else 
       UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil];
       rvc = [storyboard instantiateViewControllerWithIdentifier:@"identifierForController"];
    


    [self.window addSubview:rvc.view];
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];

    return YES;

【讨论】:

不是最适合 xcode 的方式,但您似乎对那条路线有问题:/,很高兴我能提供帮助。 这已经过时了。将 addSubview 行替换为:[self.window setRootViewController:rvc];【参考方案2】:

不要忘记在项目的 info.plist 文件中添加以下内容(主故事板文件基础名称/主要故事板文件基础名称 (iPad))

希望这会有所帮助。

【讨论】:

是的,信息-> 主故事板文件基本名称 (iPad) 设置为 iPad 故事板。 这正是我的问题。当我将应用程序升级到通用时,Xcode 将 Main nib 文件基本名称 (iPad) 设置为 Main-iPad.storyboard 而不是正确的 Main storyboard 文件基本名称 (iPad)。

以上是关于iPad 模拟器/设备使用 iPhone 故事板的主要内容,如果未能解决你的问题,请参考以下文章

找不到故事板文件“MainStoryboard_iPad~ipad.storyboardc”

我们是不是需要为所有 iPhone/iPad 设备提供单独的故事板?

底部工具栏显示在 iPhone 但不是 iPad

如何在不为 iphone 和 ipad 创建单独的 xib 的情况下为所有 ipad 和 iphone 创建通用 xib?不是故事板

应用程序适用于 iphone ipad 模拟器但不适用于 ipad 设备:黑屏然后熄灭

iPhone模拟器:默认启动iPad?