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

我以为会

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

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


但这不起作用。

最佳答案

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

编辑:添加代码示例

在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];

关于iphone - 父 View navigationController,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5058242/

10-12 00:03
查看更多