了解UIViewController层次结构

时间:2011-06-20 22:39:49

标签: iphone objective-c uiviewcontroller hierarchy presentmodalviewcontroller

好的 - 我的大脑正在被炒,所以任何帮助都会受到赞赏。

我的应用中有多个UIViewController子类。我们称他们为VC_A, VC_B, VC_C, VC_D

用户通过触摸每个视图上的按钮进行交互。

所以我的AppDelegate在VC_A中添加:

//Add the view controller's view to the window and display.  
[self.window addSubview:viewController.view];  
[self.window makeKeyAndVisible];  

VC_A然后使用presentModalViewController

加载VC_B
    VC_B *tempView = [[VC_B alloc] initWithNibName:@"temploadingscreen" bundle:nil];
    [self presentModalViewController:tempView animated:NO];
    [tempView release];  

等等,直到我得到

的层次结构
VC_A 
- VC_B  
    - VC_C  
       - VC_D  

但是当我在VC_D上调用presentModalViewController将我带到VC_C时,我希望它是VC_C的新实例,而不是原始实例。

所以我的问题是如何进行此操作 - 我是否需要使用[self dismissModalViewControllerAnimated:NO];删除视图的旧实例。

任何帮助都会感激不尽,因为我已经对此进行了搜索,但所有教程和内容都使用导航栏来控制导航 - 由于应用程序的类型,我无法使用。在UIViewControllers的新实例之间正确移动的任何工作代码示例都会很棒。

2 个答案:

答案 0 :(得分:3)

使用

创建一个新实例
ViewController_C *newVC_C = [[ViewController_C alloc] init]
[self presentModalViewController:newVC_C animated:NO];
[newVC_C release];

答案 1 :(得分:0)

我决定以不同的方式做到这一点,完全符合我的需要。

我所做的是在xib和viewDidAppear方法中创建了基本的ViewController,并根据全局NSNumber的值调用了其他viewControllers(使用presentModalViewController)。

因此,当我去任何其他视图控制器而不是它们调用另一个viewController时,他们只需设置全局变量来指示要加载哪个视图,然后关闭当前视图(使用dismissModalViewController)。

这样就可以关闭viewControllers的每个实例并释放内存。

我创建了一个示例项目并将其放在github https://github.com/sregorcinimod/Open

只需看一下你会在那里看到的下载