ストーリーボード階層をプログラムでトラバースするのに助けが必要です。この画像は、ストーリーボードというコンテキストを提供する必要があります。階層は、マスターが 3 つのタブを持つ tabViewController である splitViewController で構成されます。最初のタブには 2 つのコンテナー ビューが含まれており、下のビューは「問題のある子」です。
階層をトラバースし、detailViewController に masterViewController をタブ 2 と 3 のデリゲートとして割り当てることに成功しました。
UISplitViewController *splitViewController = (UISplitViewController *) self.window.rootViewController;
UITabBarController *masterTabBarController = [[splitViewController viewControllers] objectAtIndex:0];
MasterViewController *masterViewController2 = [[masterTabBarController viewControllers] objectAtIndex:1];
MasterViewController *masterViewController3 = [[masterTabBarController viewControllers] objectAtIndex:2];
masterViewController2.delegate = detailTableViewController;
masterViewController3.delegate = detailTableViewController;
ただし、タブ 1 は、コンテナー ビューのために、より面倒です。私の試みはうまくいかず、index-out-of-bounds エラーが発生します。
UIViewController *containerViewController = [[masterTabBarController viewControllers] objectAtIndex:0];
MasterViewController *masterViewController1 = [[containerViewController childViewControllers] objectAtIndex:1];
masterViewController1.delegate = detailTableViewController;
そのため、AppDelegate の代わりに、MasterViewController 内で別の 2 つのルートも試しました。
- (void)viewDidLoad
{
self.delegate = (DetailTableViewController *)[[self.splitViewController.viewControllers lastObject] presentedViewController];
//self.delegate = [[self.parentViewController.parentViewController.parentViewController.childViewControllers objectAtIndex:1] objectAtIndex:0]; Granted this should ONLY work for tab 1...but it doesnt.
}
しかし、コメントされていない行は nil を返します...
だから私は、親切な魂がコンテナビューを理解していることを望んでいます(これらについては驚くほど詳細が見つかりません)。より良い方法が必要です。ここにあるのは非常に小さなアプリです。何十もの画面がある複雑なアプリの階層を個別に歩かなければならないことは想像できません。
前もって感謝します!!