我想在不使用花哨的iOS导航栏的情况下创建应用。在全屏之间切换的最佳或最正确的方法是什么?
所以说我从“Home”开始,我想在不使用导航栏的情况下进入“LogIn” - 我该怎么办?我应该更改rootViewController吗?当我交换新视图时,如何确保旧视图完全释放?如果没有参考,我想象ARC会消失吗?在ARC之前,我必须将所有内容设置为null?
或者是隐藏导航栏并使用其堆栈的正确方法吗?
谢谢!
答案 0 :(得分:2)
使用普通UINavigationController
并将导航栏设置为隐藏。很简单。
答案 1 :(得分:1)
如果您不想要堆栈,则不能将默认UINavigationController与默认segue一起使用。如果您希望释放目的地后面的所有视图,则必须在目标进入屏幕时将其从堆栈中删除。
我的回答是将所有内容都放在导航控制器中,将栏设置为隐藏(self.navigationController.navigationBarHidden = YES;
)并创建一个自定义segue,覆盖perform
方法,如下所示:
- (void) perform {
UIViewController* destination = self.destinationViewController;
NSArray* newStack = [NSArray arrayWithObject:destination];
UIViewController* source = self.sourceViewController;
[source.navigationController setViewControllers: newStack animated: YES];
}
然后,将所有内容连接起来,使segues成为您的自定义类。这样,只要你看到堆栈,就会清除除了新显示的控制器之外的所有东西。
编辑:我猜你编辑是为了澄清你在写这篇文章时想要使用那个堆栈。那好吧。在那种情况下,是的,只需将栏设置为隐藏并使用正常。