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 に答える