ipad的预编译器

时间:2010-09-16 21:25:43

标签: iphone cocoa-touch ipad ios

全部,

在xcode中我试图加载不同的nib文件,以防我使用iphone / ipod或ipad。

我有一个包含所有枚举和常量的Define.h文件,所以我想在那里放一种(显然是错误的,因为我不知道该怎么做):

#if IPHONE  // <-- can I intercept the Active Executable here ?
  #define MY_VIEW @"TableViewIphone.xib"
#else
  #define MY_VIEW @"TableViewIpod.xib"
#endif 

然后在我的视图控制器中包含Define.h

[[NSBundle mainBundle] loadNibNamed:MY_VIEW owner:self options:nil];

我需要使用设备模拟器进行此操作,有没有办法拦截xcode中的“Active Executable”中的内容并且有一组专门的定义?还有其他更容易的选择吗?

感谢

1 个答案:

答案 0 :(得分:1)

您要做的是在运行时中选择适合该设备的xib。

您正在做的是编译时选项,它将设置用于所有设备的xib,这不是您想要的。

我假设您正在制作通用应用,是吗?

我希望设备在我的应用启动时使用我的应用的Info.plist文件中的正确密钥NSMainNibFile~ipad加载适当的xib。 (例如,我将NSMainNibFile~ipad设置为MainWindow-iPad ...注意:没有“.xib”位)

另一种方法是使用UI_USER_INTERFACE_IDIOM宏:

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
    // Load iPad xib
}
else
{
    // Load iPhone xib
}