IOS-7正确的方式来转换到永远不会被召回的视图

时间:2014-03-30 02:29:29

标签: ios objective-c segue uistoryboardsegue

当用户第一次启动我的应用时,他们会看到一个带有两个按钮的“主视图”。从那里,他们可以模态segue到“登录视图”或“注册视图”。这很好用,因为如果用户通过登录/注册改变主意,他们可以回击,我可以将它们从导航堆栈返回到“主视图”。

当用户成功登录时,我使用push segue将它们带到应用程序内部的第一个视图。

我的理解是,现在两个视图(例如Home View和Login View)仍在导航堆栈中。这没有实际价值,因为用户通常永远不会返回这些视图。

有更好的方法吗?或者,这只是一个轻微的低效率,我不应该担心?

1 个答案:

答案 0 :(得分:1)

更好的方法是在故事板中添加两个UINavigationController。一个用于登录/注册,另一个用于登录状态。然后,当用户成功登录时,只需将窗口rootViewController设置为登录UINavigationController的窗口即可。UINavigationController。这样做会减少你的记忆,因为登录/注册- (void)userLoggedIn { self.loggedIn = YES; // Other properties here such as username, email, and password if necessary. UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; [self.window setRootViewController:[mainStoryboard instantiateViewControllerWithIdentifier:@"LoggedIn"]]; } 不再在堆栈中。

这就是我在AppDelegate中的方法中的应用程序中所做的:

#import "AppDelegate.h"

AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[delegate userLoggedIn];

只需成功登录/注册即可从登录/注册视图控制器调用该方法:

{{1}}