了解UIViewController层次结构



好吧,我的大脑现在被炸了,所以任何帮助都将不胜感激。

我的应用程序中有UIViewController的多个子类。让我们称它们为CCD_ 2。

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

所以我的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上调用CCD_ 4以将我带到VC_C时,我希望它是VC_C的新实例而不是原始实例。

因此,我的问题是如何进行这项工作——我是否需要使用[self dismissModalViewControllerAnimated:NO];来删除视图的旧实例。

任何帮助都将不胜感激,因为我已经搜索过了,但所有的教程和东西都使用导航栏来控制导航——由于应用程序的类型,我无法使用导航栏。任何在UIViewControllers的新实例之间正确移动的工作代码示例都将非常棒。

只需使用创建一个新实例

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

我决定用一种不同的方式来做这件事,它非常适合我的需要。

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

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

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

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

只要看看下载,你就会在那里看到

最新更新