如何在单独的类中创建通用 Iphone/Ipad 应用程序?
Posted
技术标签:
【中文标题】如何在单独的类中创建通用 Iphone/Ipad 应用程序?【英文标题】:How to Create Universal Iphone/Ipad App in Separate Classes? 【发布时间】:2012-05-03 02:24:25 【问题描述】:我正在为 Iphone 和 Ipad 创建一个通用应用程序。但我不需要为 Iphone 和 Ipad 上相同的课程。我需要为每个 Iphone 和 Ipad 开设单独的课程。任何人都可以给我一个想法如何做到这一点?我已经使用 Xcode 4 创建了我的应用程序。但是当我在那里创建一个新项目时,它会为两个设备生成一个类文件和 Nib。为了我的目的,我不需要那样做。
EX : 我需要这两种设备的类文件
IphoneviewController.h
IPhoneviewController.m
IPadviewController.h
IPadviewController.m
one Xib
UniversalviewController.xib
感谢并期待快速回复。
【问题讨论】:
在 iPhone/iPad 上使用通用的 xib 文件并不是一个好主意,因为它们的大小不同,这会给您保持设计的一致性带来问题。 是的,我知道,但客户希望这样...... 看来您违反了 MVC 规则。 2个视图控制器一个视图?两个控制器之间的冲突,应该控制视图? 是的,它违反了 MVC 规则。但它应该有一种方法来检测设备类型并根据它检测类。如果是 Ipad,我们可以为笔尖分配相关的类,对于 iphone 也是如此。 【参考方案1】:BOOL isIPhone = (UI_USER_INTERFACE_IDIOM() != UIUserInterfaceIdiomPad);
只要判断它然后使用你的单独的类来显示不同的视图
添加:
对不起,我不使用任何 xib|nib 来构建我的应用程序,我使用纯代码 但我认为您不能将一个 xib 与 2 个视图控制器一起使用
只需为每个视图控制器创建 2 个 xib 或将代码合并到一个视图控制器中 就像上面的代码
【讨论】:
【参考方案2】:如何在您的 applicationDidFinishLaunch 中执行以下操作:
UIViewController * viewController;
if (UI_USER_INTERFACE_IDIOM() != UIUserInterfaceIdiomPad)
viewController = [[IphoneviewController alloc] initWithNib: "UniversalviewController"];
else
viewController = [[IPadviewController alloc] initWithNib: "UniversalviewController"];
//now use your VC however it is appropriate for your app, such as...
self.window.rootViewController = viewController;
[self.window makeKeyAndVisible];
顺便说一下,关于 MVC 的讨论,假设你需要两个不同的 viewControllers 用于两个平台,你可以通过创建一个包含几乎所有内容的共享类来共享公共代码,将其导入每个,然后只实现或覆盖 ipad 特定版本中需要特定于 iPad 的任何内容。
例如,这是您的 IPadviewController 的 .h...
#import "viewController_Shared.h"
@interface IPadviewController : viewController_Shared
【讨论】:
AppDelegate中如何调用视图控制器?以上是关于如何在单独的类中创建通用 Iphone/Ipad 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章
在 Room 中创建通用 DAO 接口时,“参数的类型必须是带有 @Entity 注释的类”
如何制作以编程方式使用 UISplitViewController 和 UINavigationController 的通用 iPhone / iPad 应用程序?