0

我有一个主视图控制器,并且正在呈现一个子视图。对于孩子内部的其中一项设置,我需要再次调用主视图控制器。它只会让事情变得容易得多。

以下导致层次结构问题:

#define appDelegate (MyAppDelegate *)[[UIApplication sharedApplication] delegate]

[self presentViewController:[appDelegate mainViewController] animated:YES completion:^{}];

有什么方法可以轻松调用 mainViewController 而不会丢失子视图的状态?

编辑

这是我呈现子视图的方式。

ChildViewController *childViewController = [[ChildViewController alloc] init];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:childViewController];
[childViewController release];
[self presentModalViewController:navigationController animated:NO];
[navigationController release];
4

2 回答 2

2

您不能呈现已经呈现或位于导航堆栈中的视图控制器。什么是主视图控制器?你实例化了吗?已经添加到屏幕上了吗?

如果两者都是,您要么需要回到它(解雇它),要么先将它从它的父级中删除,然后再呈现它。

于 2012-09-29T22:45:32.627 回答
0

在您的子视图中,您应该可以访问您的应用程序委托及其 mainViewController 属性,如下所示:

    MyApplicationDelegate *appDelegate = (MyApplicationDelegate *)[[UIApplication sharedApplication] delegate];
于 2012-09-29T22:35:16.300 回答