2

好吧 - 我的大脑现在正在炒,所以任何帮助将不胜感激。了解UIViewController的层次结构

我在我的应用程序中有多个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然后加载VC_B使用presentModalViewController

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 

层次但那时我打电话presentModalViewController在VC_D带我到VC_C我希望它是VC_C的新实例,而不是原始实例。

所以我的问题是如何去做这个 - 我需要使用[self dismissModalViewControllerAnimated:NO];删除视图的旧实例。我不能使用,因为应用程序的类型之一 -

任何帮助,因为我已经做了搜索这一点,但所有的教程和材料使用导航栏来控制导航感激地赞赏。在UIViewControllers的新实例之间正确移动的任何工作代码示例都会很好。

回答

0

我决定做这里面完全适用于什么,我需要以不同的方式一个新的实例。

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

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

这样,viewControllers的每个实例都关闭并释放内存。

我已经创建了一个示例项目,并把它放在github上https://github.com/sregorcinimod/Open

只要看看在下载你会看到它有

3

只需创建与

ViewController_C *newVC_C = [[ViewController_C alloc] init] 
[self presentModalViewController:newVC_C animated:NO]; 
[newVC_C release]; 
+1

+1。您可以同时拥有同一个类的多个实例。以这种方式考虑一下...每个视图控制器都是NSObject的子类,但是你一次只能有一个以上的实例化。 – thomashw

+0

我需要循环圆了很多我决定了不同的方法 - 一旦我能回答我的问题(必须等待8小时),我将把我的答案有一个链接到一个示例项目 – sregorcinimod