UINavigationController建议

时间:2012-05-21 10:22:21

标签: iphone objective-c ios uinavigationcontroller

我已经读过UINavigationController是你想要从n个屏幕跳到第一个屏幕的最佳选择。它需要以下代码:

NSMutableArray *array=[[NSMutableArray alloc]initWithArray:self.navigationController.viewController];
[array removeObjectAtIndex:1];
[array removeObjectAtIndex:1];
[array removeObjectAtIndex:1];
self.navigationController.ViewController=array;
[self.navigationController popViewController:YES];

通过使用此代码,我可以直接从第四个屏幕直接进入第一个屏幕。 如果我不使用导航控制器,那么也可以通过在第四个屏幕中创建firstSCreen的对象,我可以在几行内实现相同的功能。那么为什么要选择导航控制器呢?如果回答是内存优化,那么我们将自动释放firstViewController的对象,现在我们正在使用自动引用。

3 个答案:

答案 0 :(得分:3)

首先,这是流行的错误方法。真的是

[self.navigationController popToRootViewController:YES];

,第二件事是如果你在4屏幕,那么通过弹出到特定的viewcontroller将不会弹出所有屏幕。这是记忆问题。

另一个问题是有时你不想丢失父屏幕数据。如果你使用pop方法到特定的viewcontroller,数据将会随着释放数据的对象而丢失。你做了一个新的。

重点是,这取决于您的情况适合您的场景。但正常和通常的做法是不使用特定的弹出技术,因为它可能会导致问题

答案 1 :(得分:0)

您可以使用

[self.navigationController popToViewController:(UIViewController *) animated:(BOOL)];

你只需要传递你想直接移动的ViewController对象......并且视图控制器之间会自动弹出

希望这可以帮助你...

答案 2 :(得分:0)

同意Saad'

还有一件事是,如果您有各种屏幕,数据来自服务器。 在首先填充数据的同时渲染(用户交互)屏幕非常困难。

与所有其他兄弟观点相同。