访问共享委托人的iPhone/iPad委托?
问题描述:
如何在通用应用程序中访问共享委托或设备特定的“委托”?访问共享委托人的iPhone/iPad委托?
我想在共享委托上存储属性并在其中放置基本逻辑,但是如果我想要这么做,请在iPhone委托中说出iPhone的具体内容,我会假设我需要分别访问这两个委托。它是否正确?
如何在代码中访问这些代表?
答
我不确定您的设备特定代表的含义。我假设你通过“共享委托”来引用你的应用程序委托。如果您需要具体到iPhone或iPad的东西,你可以这样做:
BOOL isiPad = NO;
if ([UIDevice instancesRespondToSelector:@selector(userInterfaceIdiom)]) {
UIUserInterfaceIdiom idiom = [[UIDevice currentDevice] userInterfaceIdiom];
if (idiom == UIUserInterfaceIdiomPad) {
isiPad = YES;
}
}
if (isiPad) {
// iPad-specific stuff
} else {
// iPhone-specific stuff
}
这比使用#define
好多了,因为你可以编译一个通用的应用程序在所有iOS设备的工作。
编辑:增加了一些内省,以防止在iPhone OS 3.1.x和更早版本上崩溃。谢谢,巴斯蒂安。
在为iPad更新旧项目时,XCode会创建一个共享委托。我认为一个新的通用应用程序也是这样做的。显然不是。我的错。 – Moshe 2010-06-18 19:10:24
请注意,这会在3.1.x设备上崩溃,因为userInterfaceIdiom在那里不存在。 如果currentDevice有这个选择器,你必须首先检查。 – Bastian 2010-08-05 06:21:47
我只是检查了一遍,有一个定义,你可以在UIDevive.h使用已定义: 的#define UI_USER_INTERFACE_IDIOM()([的UIDevice currentDevice] respondsToSelector:@selector(userInterfaceIdiom)] [的UIDevice currentDevice] userInterfaceIdiom] :UIUserInterfaceIdiomPhone) – Bastian 2010-08-05 06:29:29