私はiOSアプリに取り組んでおり、iPhoneとiPadの両方でユニバーサルにしたいと考えています。これは行われ、問題なく動作します:
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
self.viewController_iPhone = [[ViewController_iPhone alloc] initWithNibName:@"ViewController_iPhone" bundle:nil];
} else {
self.viewController_iPad = [[ViewController_iPad alloc] initWithNibName:@"ViewController_iPad" bundle:nil];
}
if (self.viewController_iPhone == nil)
self.window.rootViewController = self.viewController_iPad;
else
self.window.rootViewController = self.viewController_iPhone;
コントローラーごとにビューがあります (ViewController_iPad.xib、ViewController_iPhone.xib)。私の問題にどのビューがロードされているかは問題ではありません。ビューには、追加されたサブビュー (UIScrollView) があります。この ScrollView には、xib からの 2 つのビューがあります。
NSArray *nibContents = [[NSBundle mainBundle] loadNibNamed:@"SubView1" owner:self options:nil];
UIView *view = [nibContents objectAtIndex:0];
view.frame = CGRectMake(2, 0, scrollView.frame.size.width - 2, scrollView.frame.size.height);
[scrollView addSubview:view];
nibContents = [[NSBundle mainBundle] loadNibNamed:@"SubView2" owner:self options:nil];
view = [nibContents objectAtIndex:0];
view.frame = CGRectMake(scrollView.frame.size.width + 2 , 0, scrollView.frame.size.width - 4, scrollView.frame.size.height);
[scrollView addSubview:view];
(このコードは iPad/iPhone コントローラにあります)。それでも大丈夫です。しかし、ScrollView に表示されるこれらのサブビューの所有者を (IB で) 設定する方法がわかりません。これらのサブビューは、メイン ビューにある ScrollView にあるため、これらのサブビューの所有者を iPad/iPhone コントローラーとして設定したいと考えています。ただし、所有者としてできるのは 1 つのクラスのみです。2 つのメイン コントローラーがあり、どちらが実行時に読み込まれるかわからない場合、所有者を設定する方法を教えてください。ありがとうございました。
編集: 別の質問があります: ViewController_iPhone があります。これには View プロパティがあり、このプロパティは ViewController_iPhone (.xib) のメイン ビューの「ルート」ビューに割り当てられます。このビュー プロパティをサブビュー ビューにも割り当てることはできますか? ViewController_iPhone のビュー プロパティを IB のサブビューの「ルート」ビューに割り当てると、EXC_BAD_ACCESS エラーが発生したためです。