我为最初的iphone应用程序创建了一个额外的iPad目标。
来自Apple文档: “在几乎所有情况下,您都需要定义一个新的视图控制器类来管理应用程序界面的iPad版本,特别是如果该界面与您的iPhone界面完全不同。您可以使用条件编译来协调创建不同的视图控制器。“
但他们没有提供有关条件编译的任何示例或细节。谁能举个例子?我会在哪里做到这一点?
编辑: 我尝试在iPad目标中定义以下C标志:-D USE_IPAD,-DUSE_IPAD。 无论哪种方式,此代码总是导致IPHONE被记录:
#ifdef USE_IPAD
NSLog(@"IPAD");
#else
NSLog(@"IPHONE");
#endif
我错过了什么?
答案 0 :(得分:2)
Conditional compilation是您使用编译器指令(或编译器标志)来控制编译的地方。
#ifdef SOME_CONDITION
//This will only be compiled if SOME_CONDITION is defined as a compiler flag
#else
//Otherwise, this code will compile.
#endif
您可以在项目设置中定义编译器指令。 右键单击目标(创建多个目标,一个用于iPhone,一个用于iPad,然后点击获取信息)。然后向下滚动到其他C标志。你可以在那里添加(a)标志。
修改强>
看来我犯了同样的错误。一些快速Google搜索引导我转到Apple documentation and this blog post,表示您可能需要在构建设置中添加新字段。
答案 1 :(得分:2)
另一种可能比条件编译更可取的方法是直接的if else
语句:
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
// iPad code
} else {
// iPhone or iPod Touch code
}
我更喜欢这种方式而不是条件编译,因为我觉得它更容易维护并减少线路噪音。