我想制作一个通用版本,但我完全以编程方式创建了我的UI。
1)我可以将不同的视图控制器类添加到特定于设备的资源目录中吗?或者必须在两个设备上共享课程?
2)如果我必须在两台设备上共享课程,那么有条件地加载classA或classB的最安全方法是什么,具体取决于它是iPhone还是iPad设备?
答案 0 :(得分:3)
1)您无法在两个位置添加视图控制器类,因为在编译时,将在两个位置找到相同的符号(即类名),并且应用程序将不会链接。
2)我会说最安全的方法是使用不同的.xib,但是如果你想让它仅仅通过代码工作,你就可以创建一个只能正确加载类的单例视图管理器。然后,在其余代码中,您需要做的就是:
[MyViewManager sharedInstance] instantiateViewController:kMyDetailsView]
并根据需要显示视图。
要确定当前设备,您可以使用如下语句:#define iPad [UIDevice currentDevice].userInterfaceIdiom==UIUserInterfaceIdiomPad
。它可以包含在您的前缀文件中,使其可用于整个项目。
答案 1 :(得分:1)
在每个视图控制器上,您可以执行设备检查以查看正在运行您的应用的设备,并相应地构建您的UI。即,只使用一组视图控制器,在* .m文件中,在if-else循环中,相应地构建你的UI。
请参阅此帖子进行设备检查: Determine device (iPhone, iPod Touch) with iPhone SDK
PS:在你的if-else中,做一个if(iPad){} else {}检查作为一种最佳做法,因为,如果他们这样做,人们会忘记检查iPod Touch(iPhone){ }否则{}