gpt4 book ai didi

iphone - 从 subview 导航 Controller 访问顶部导航 Controller

转载 作者:行者123 更新时间:2023-12-03 18:23:06 24 4
gpt4 key购买 nike

我的 View 和 Controller 设置如下。

  1. 标签/栏 Controller
  2. 1. 内是 Root View Controller
  3. 2. 内是一个以编程方式创建的导航 Controller ,在 Root View Controller 中显示为 subview 。

我想做的是访问顶部选项卡栏/导航 Controller ,以便我可以将 View 推送到上面。

我尝试了parentViewController,但它所做的只是将 View 推送到编程的导航 Controller 上。

有什么建议吗?

这就是我设置 Root View Controller 的方式:

  -(void)viewDidAppear:(BOOL)animated{
NSLog(@"ROOT APPEARED");
[super viewDidAppear:animated];

WorklistViewController *worklistController = [[WorklistViewController alloc]initWithNibName:@"WorklistView" bundle:[NSBundle mainBundle]];
UINavigationController *worklistNavController = [[UINavigationController alloc] initWithRootViewController:worklistController];
worklistNavController.navigationBar.barStyle = UIBarStyleBlackOpaque;
worklistNavController.view.frame = watchlistView.frame;
[worklistNavController.topViewController viewDidLoad];
[worklistNavController.topViewController viewWillAppear:YES];
[self.view addSubview:worklistNavController.view];

GetAlertRequestViewController *alertsController = [[GetAlertRequestViewController alloc]initWithNibName:@"AlertsView" bundle:[NSBundle mainBundle]];
UINavigationController *alertsNavController = [[UINavigationController alloc] initWithRootViewController:alertsController];
alertsNavController.navigationBar.barStyle = UIBarStyleBlackOpaque;
alertsNavController.view.frame = alertsView.frame;
[alertsNavController.topViewController viewDidLoad];
[alertsNavController.topViewController viewWillAppear:YES];
[self.view addSubview:alertsNavController.view];
}

最佳答案

嵌套的 ViewController(即,在由实际上位于 NavController 堆栈上的 ViewController 控制的 View 内)无法直接访问其父 View 的 Controller 是其堆栈成员的 UINavigationController。这是一句长话,但其含义是:你无法从这里到达那里。

相反,您必须通过应用程序委托(delegate)访问应用程序的 NavController。

YourAppDelegate *del = (YourAppDelegate *)[UIApplication sharedApplication].delegate;
[del.navigationController pushViewController:nextViewController animated:YES];

您正在使用 UIApplication 的单例(包含有关您的应用程序的各种有用信息),它有一个指向 AppDelegate 的 .delegate 属性,并且包含对 NavigationController 的引用。

无论如何,这就是“基于导航的应用程序”Xcode 模板设置 NavController 所有权的方式。 YMMV,如果你自己推出的话——不过如果你这样做了,你可能就不需要问这个问题了。

关于iphone - 从 subview 导航 Controller 访问顶部导航 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3142134/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com