私の解決策は、ユニバーサルアプリにXcode 7.1.1を使用し、ストーリーボード、自動レイアウト、およびサイズクラスを使用して、iOS 9用に構築しています...
Midhun MPの回答のバージョンを使用しました...現在/元の(交換/新規/秒ではない)詳細ビューコントローラーのviewDidLoad
メソッド内:
明らかに、最初にコントローラーの正しいヘッダー ファイルをインポートします。
#import "NEW_DetailViewController.h"
次にviewDidLoad
メソッド内で:
- (void)viewDidLoad {
[super viewDidLoad];
<<OTHER_CODE>>
if (<<INSERT_THE_LOGIC_YOU_NEED_TO_TRIGGER_THE_REPLACEMENT_DETAIL_VC>>) {
NEW_DetailViewController *viewNewDetailVC = [[NEW_DetailViewController alloc] initWithNibName:@"NEW_DetailViewController" bundle:nil];
UINavigationController *navController = [[UINavigationController alloc] init];
[navController pushViewController:viewNewDetailVC animated:YES];
NSArray *arraySplitViewControllers = [[NSArray alloc] initWithObjects:[self.splitViewController.viewControllers objectAtIndex:0],navController,nil];
self.splitViewController.viewControllers = arraySplitViewControllers;
}
}
注: XIB ファイルをロードせずにこのコードを機能させることができました。[[UIViewController alloc] init]
代わりにを使用して、交換用の詳細な VC 全体をコードで構築しまし[[NEW_DetailViewController alloc] initWithNibName:@"NEW_DetailViewController" bundle:nil]
たが、XIB ファイルをロードできなかったことに不満を感じたため、永続化しました...
XIBファイルを分割ビューコントローラーの代替詳細ビューコントローラーとして正常にロードするというこの問題を解決しようとして、さまざまなSO回答から多くのバリエーションを試みました。
最後に、 Travis Mによるこの回答で、必要なヒントが得られました...
新しい XIB ファイルとUIViewController
!
新しいファイルを作成し、UIViewController のサブクラスにします。スクリーンショットを参照してください:

重要「XIB ファイルも作成する」チェックボックスを必ずオンにしてください。
UIViewController
ビューの内容をコード化する場合を除き、 の新しいサブクラスを変更する必要はありません。ソリューションに a を追加するだけで済み、UILabel
Interface Builder を使用してこれを行いました。
上記の例のように、交換用の View ControllerNEW_DetailViewController
をコードで参照していることを確認してください。
それでおしまい!
XIB ファイルでは、次のようになります。


