父视图navigationController

sim*_*nbs 7 iphone sdk subview uinavigationcontroller pushviewcontroller

我有一个视图,它是tabBarController的一部分.在这个视图中,我有一个带有表格的子视图.单击此表中的单元格时,我想访问父视图的navigationController.这可能 - 如果是的话,怎么样?

我以为会是

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

[super.navigationController pushViewController:bandDetailViewController animated:YES];
[bandDetailViewController release];
Run Code Online (Sandbox Code Playgroud)

但这不起作用.

Ray*_*eck 10

实例化子视图控制器时,传入对导航控制器(超级)的引用,并将其存储在实例变量中.然后,您可以在sub中需要时引用它.我一直在寻找一个更优雅的解决方案来解决这个问题和类似的问题,但没有成功.通过参考作品,所以我这样做,并尝试继续我的生活.

编辑:添加代码示例

在mainVC.m

 // this might be in didSelectRowForIndexPath:
 SubViewController *subVC = [[SubViewController alloc] init];
 subVC.superNavController = self.navController;
 [self.navigationController pushViewController:subVC animated:YES];
Run Code Online (Sandbox Code Playgroud)

在SubViewController.h中

 @property (nonatomic, retain) UINavigationController *superNavController;
Run Code Online (Sandbox Code Playgroud)

在SubViewController.m中

  @synthesize superNavController;


  // then, wherever you need it, say to pass to a sub-sub-viewController...
  [self.superNavController pushViewController:myNewVC animated:YES];
Run Code Online (Sandbox Code Playgroud)