8

tabBarController の一部であるビューがあります。このビューには、テーブルを含むサブビューがあります。このテーブルのセルをクリックすると、親ビューの navigationController にアクセスしたいと思います。これは可能ですか?

だろうと思った

BandDetailViewController *bandDetailViewController = [[BandDetailViewController alloc] initWithNibName:@"BandDetailViewController" bundle:nil];
bandDetailViewController.band = [thisDay objectAtIndex:indexPath.row];

[super.navigationController pushViewController:bandDetailViewController animated:YES];
[bandDetailViewController release];

しかし、それはうまくいきません。

4

2 に答える 2

10

サブビュー コントローラーをインスタンス化するときは、ナビゲーション コントローラー (スーパー) への参照を渡し、それをインスタンス変数に格納します。その後、サブで必要なときに参照できます。これと同様の問題に対するよりエレガントな解決策を探していましたが、成功しませんでした。リファレンスを渡すことはうまくいくので、私はそれをして、自分の人生を続けようとしています。

編集:コードサンプルを追加

mainVC.m 内

 // this might be in didSelectRowForIndexPath:
 SubViewController *subVC = [[SubViewController alloc] init];
 subVC.superNavController = self.navController;
 [self.navigationController pushViewController:subVC animated:YES];

SubViewController.h 内

 @property (nonatomic, retain) UINavigationController *superNavController;

SubViewController.m 内

  @synthesize superNavController;


  // then, wherever you need it, say to pass to a sub-sub-viewController...
  [self.superNavController pushViewController:myNewVC animated:YES];
于 2011-02-20T17:13:14.933 に答える
0

-pushViewController を呼び出すと、自分自身はどのビュー コントローラーですか? タブ サブビューの 1 つからそれを呼び出している場合、self は、追加した最上位ビューからのナビゲーション コントローラーへの参照を持っていない可能性があります。

この投稿をご覧ください。この男も同じ問題を抱えているようです。

サブビューのビューコントローラーをプッシュできません

于 2011-02-20T16:21:21.363 に答える