2012-03-19 40 views
0

我正在设计一个目标C中的iphone应用程序。 截至目前,我的应用程序开始处有一个UINavigationController,其余的导航都是从它处理的。如何在基于导航的应用程序中管理登录视图?

现在我想在应用程序加载时插入登录屏幕。

如何让它独立于应用程序的其余部分? 即截至目前,我创建了一个LoginViewController并将其添加到我的应用的NavigationViewController 。当用户成功登录时,应用程序会继续将下一个屏幕推入导航控制器。 但这种方法的问题是,我仍然可以回到导航项目的初始登录屏幕。

我尝试在登录后从第一个屏幕隐藏导航栏,但它会从每个后续屏幕中删除导航栏。

我能想到的唯一工作解决方案是,我应该手动在导航栏中隐藏导航栏,并使其在随后的屏幕中可见。 有没有其他的理智方法?

+0

您可以在第一个控制器的viewDidLoad中显示LoginScreen,并在登录后解除它。 – 2012-03-19 06:11:52

回答

2

我可能会做你的导航控制器不顾登录界面,然后提出使用presentModalViewController登录屏幕:动画:

0

出示LoginViewController在viewDidLoad为的navigationController一旦用户登录您关闭它,然后继续只要你想要的屏幕流量。你也可以在NSUserDefault中存储该用户登录你的应用程序,这样你可以检查这个值,并提交loginView,以防他没有登录,否则你会像正常显示导航屏幕

0

如果用户还没有登录的应用程序显示LoginViewController并且不允许用户到那时去导航控制器。一旦登录不显示LoginViewController直接显示导航控制器,以便用户不必一次又一次签名。要存储用户登录信息,请使用NSUserDefaults。相应地在加载应用程序和显示控制器时检索信息。

干杯

0

您需要UserDefaults存储一些值 - 自动登录/ DID登录和当应用程序是启动你检查这个值如果系统用户isn`t u需要创建登录视图控制器和modaly目前它。 您的第一个视图之前出现u需要这样的事 -

BOOL didLogin = [[NSUserDefaults standardUserDefaults]boolForKey:@"isLogin"]; 
if (!didLogin) { 
    LoginViewController *loginVC = [[LoginViewController alloc]init]; 
    [self presentModalViewController:loginVC animated:NO]; 
} 

,当用户登录您需要保存在用户的默认值

[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"isLogin"]; 

如果你VANT自动登录功能,您必须存储密码钥匙扣

0

我建议在firstviewcontroller隐藏后退按钮,并取消隐藏所有视图控制器。

-(void)viewWillAppear:(BOOL)animated { 
    self.navigationItem.hidesBackButton=YES; 
} 

否则另一种解决方案是,存在于您的firstviewcontroller的viewDidLoad方法和作为登录的loginviewcontroller完成解雇登录按钮所呈现的LoginController。

即使它的标准方法来实现,所有具有登录设施的应用程序都会有这种类型的流程。

希望这会帮助你。

相关问题