0

基本的に、splitViewController には 2 つの MasterViewControllers がありますが、一度に 1 つのみでアプリを実行できます。両方の MasterViewControllers が同じ DetailViewController を使用しています。ユーザーがタブバーボタンを押すと、2 番目の masterViewController がプッシュされます。

splitViewController は、AppDelegate で次のように簡単に宣言されます

MasterViewControllerOne *mvc1 = [[MasterViewControllerOne alloc] initWithNibName:@"MasterViewControllerOne_iPad" bundle:nil];
UINavigationController *masterOneNavigationController = [[UINavigationController alloc] initWithRootViewController:mvc1];

DetailViewController *dvc = [[DetailViewController alloc] initWithNibName:@"DetailViewController_iPad" bundle:nil];
UINavigationController *detailNavigationController = [[UINavigationController alloc] initWithRootViewController:dvc];

self.splitViewController = [[UISplitViewController alloc] init];
self.splitViewController.delegate = detailViewController;
self.splitViewController.viewControllers = @[masterOneNavigationController, detailNavigationController];
self.window.rootViewController = self.splitViewController;

実行時に、MasterViewControllerTwo を MasterViewControllerOne と交換したい

新しいView Controllerをプッシュするアクション:

MasterViewControllerTwo*mvc2=[[MasterViewControllerTwo alloc]initWithNibName:@"MasterViewControllerTwo_iPad" bundle:nil];
[self.navigationController pushViewController:mvc2 animated:YES];

これにより、mvc1 の上に mvc2 がスワップされます。ただし、mvc2 で tableview の行をタップしても、DetailViewController はアクティブになりません。

DetailView を有効にするには (mvc1 と mvc2 で同じ)、次のようにします。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    Item *theItem =[[self.items objectAtIndex:[indexPath section]]objectAtIndex:[indexPath row]];
    [self.detailViewController setLabelsForItems:theItem];
}

MasterViewController が appdelegate で splitviewcontrollers 配列のメンバーとして定義されている限り、非常にうまく機能します。では、mvc2 がスタックの最上位にあるときに DetailViewController をアクティブにしないのはなぜでしょうか?

4

1 に答える 1

0

mvc2でテーブルビューの行をタップしても、DetailViewControllerはアクティブになりません

まあ、それだけで魔法のように起こるわけではありません。2番目のテーブルビューの行が選択されたときに応答するのはあなた次第です。これを行うためのコードは表示されていないため、コードがないと想定されます。

言い換えると、分割ビューコントローラは、マスターと詳細を含むことを除いて、それ自体では何もしません。マスターと詳細の間のコミュニケーションはあなた次第です。テンプレートは、あなたがしなければならないことの種類を示しています。

于 2012-10-16T17:48:58.623 に答える