【问题标题】:iPhone - change navigation controller's view, using a button in a subviewiPhone - 使用子视图中的按钮更改导航控制器的视图
【发布时间】:2011-10-17 09:19:57
【问题描述】:

我有一个带有根视图的导航控制器。 根视图包含按钮,可以将新视图正确推送到导航控制器上。

但是,在这个 rootview 上,我也有子视图(它是一个滚动预览,如 appStore 图像,由 3 个 UIview 项组成的视图)。在这些 UIView 上,有一个按钮,我想更改 rootview 导航控制器,就像其他按钮一样。

目前,它已构建并运行,但未推送新视图。有什么想法吗?

ScrollItem按钮上的Click方法:

MyViewController *newView = [[MyViewController alloc] initWithNibName:@"ManageMyPain" bundle:[NSBundle mainBundle]];
[self.navigationController pushViewController:newView animated:YES];  

...我猜是因为 self 没有导航控制器,但 rootview 有。

谢谢!!

【问题讨论】:

    标签: iphone sdk navigationcontroller


    【解决方案1】:

    属性“navigationController”只有在视图控制器被推送到导航控制器堆栈时才被设置。您的第二个视图是推送视图控制器的子视图,这意味着此属性为 NULL,如果您尝试向其推送内容,则不会执行任何操作。

    【讨论】:

      【解决方案2】:

      是的,这是因为如果您没有将该控制器推送到导航堆栈或您没有手动设置,self.navigationController 将为零。

      所以你只需要参考rootViewController.navigationController 然后[navigationController pushViewController:newView animated:YES]; 就可以完美地工作了。

      【讨论】:

      • 非常感谢...我究竟如何引用 rootViewController.navigationController ?
      • 在您的子视图中创建@property (nonatomic, retain) UINavigationController *rootNavController;,在实现文件中创建@synthesize rootNavController,在创建该子视图后,只需在您的根视图控制器中设置其属性:subview.rootNavController = self.navigationController;
      • 谢谢 ... 给你的高五 :-)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多