iOs特定于设备的资源不起作用 - ~iPad加载默认XIB - 通用应用程序

时间:2011-06-12 00:38:21

标签: iphone objective-c ipad universal

我正在制作一个基于Utility App模板的通用应用程序。我选择了一个通用应用程序,MainView.xib和MainView~iPad.xib在两种设备类型上都能正常工作。

在iPad2上,当我切换到FlipsideView时,它会加载FlipsideView.xib,即使项目中有一个非常好的FlipsideView~iPad.xib文件。默认的xib是正常的(iPhone)大小,显示在iPad的左下角。

我必须手动创建FlipsideView~iPad xib。我相信我已经在IB中正确连接了xib,因为它显示与FlipsideView.xib连接相同。

在过去的几周里,我已经阅读了很多类似问题的帖子和this Stack Overflow thread最清楚的答案,并包含Apple文档的链接。所以我知道它适用于其他人并且有记录。

此部分的代码与库存效用应用程序模板中的showInfo()方法相同。

(是的,我知道我可以手动加载~iPad版本检查UI_USER_INTERFACE_IDIOM()。我正在试图弄清楚我在做什么错误让~iPad修饰符起作用。)

我缺少什么想法?

非常感谢你的帮助!

2 个答案:

答案 0 :(得分:27)

最后我找到了解决方案。这真的很简单。 xib必须命名为~ipad而不是~iPad,而@ iphone而不是~iPhone。 不好的是,如果你给它们命名~iPad,一切都在模拟器中工作,但它在真实设备上不起作用。

答案 1 :(得分:0)

可以根据名称自动完成,无后顾之忧。唯一的问题是你需要切换你的命名约定。 MainView.xib将是你的iPad xib和MainView~iphone.xib将是你的iPhone xib。然后它应该适合你,除了alloc / init之外你不需要做任何事情。

您可以在此处查看有关此主题的其他答案:iOS: Using device modifiers for loading xib files?