4

私のストーリーボードでは、私のプロジェクトは、私のカスタムUITableViewController(ナビゲーション コントローラーに埋め込まれている) を詳細ビュー コントローラー (リレーションシップ セグエによって行われる) として自動的に割り当てる分割ビューから始まります。UITableViewController必要に応じてマスター ビュー コントローラー ビューを変更できるように、カスタムから分割ビュー コントロールにアクセスするにはどうすればよいですか?

4

1 に答える 1

8

splitViewControllerUIViewController には、viewController が埋め込まれている分割ビュー コントローラへの参照であるプロパティがあります。テーブル ビュー コントローラーは、それ自体が分割ビュー コントローラー内に埋め込まれているナビゲーション コントローラー内に埋め込まれているため、まずナビゲーション コントローラーへの参照を取得し、そこから分割ビューへの参照を取得する必要があります。

したがって、カスタム tableViewController のコードでこれを行うことができます。

UISplitViewController *splitVC = [[self navigationController] splitViewController];

masterViewController への参照を取得できる元。splitViewController には、viewControllers2 つの要素の NSArray であるプロパティがあります。インデックス 0 の要素はマスター viewController です。インデックス 1 の要素は詳細ビュー コントローラーです。

UIViewController *masterVC = [[splitVC viewControllers] objectAtIndex:0];

マスターがカスタム viewController サブクラス (おそらくそうである) である場合は、配列から引き出すときにそのようにキャストする必要があることに注意してください。

マスター ビュー コントローラーを完全に新しいビュー コントローラーに置き換えたい場合は、新しいマスター VC と既存のディテール ビュー コントローラーを使用して新しい配列を作成し、それをスプリット ビュー コントローラーのviewControllersプロパティに割り当てることで実行できます。

UIViewController *detailVC = [[splitVC viewControllers] objectAtIndex:1];
NSArray *newViewControllerArray = [NSArray arrayWithObjects:newMasterVC, detailVC, nil];
splitVC.viewControllers = newViewControllerArray;
于 2012-08-22T14:36:01.443 に答える