2

我有一个问题,我想为 iPhone 和 iPad 添加不同的导入文件,但对于 iPad 不起作用,我就是这样做的:

#if TARGET_OS_IPHONE
#import "MyView_iPhone.h"
#elif TARGET_OS_IPAD
#import "MyView_iPad.h"
#endif

当在代码中时,我会写例如:

MyView_iPhone *iphone = [MyView_iPhone alloc] init];

有效,但是:

MyView_iPad *iphone = [MyView_iPad alloc] init];

不起作用,给我一个错误,因为没有看到 MyView_iPad.h,我该怎么办?

这是错误:

未知接收器“MyView_iPad”;你的意思是“MyView_iPhone”吗?

4

1 回答 1

2

<TargetConditionals.h>实际上并没有定义一个TARGET_OS_IPAD. 您无法在编译时知道您是为 iphone 还是 ipad 执行!这是您应该在运行时检查的内容,导入两个视图并执行以下操作:

UIView *iphone;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
    iphone = [[MyView_iPad alloc] init];
}
    else{
    iphone = [[MyView_iPhone alloc] init];
}
于 2013-09-19T10:35:49.940 回答