覆盖UINavigationController中的后退按钮

时间:2014-07-03 07:14:43

标签: ios uinavigationcontroller

我是iOS开发的新手,正在开发我的第一个应用程序。我的应用程序有3个主要视图,第一个是登录屏幕(允许用户登录到Web服务),第二个是提交屏幕(允许用户向Web服务提交内容),最后一个是设置视图(除其他外,它允许用户注销应用程序)。

我将用户凭据存储在Keychain中作为良好做法,以便用户可以保持登录状态,通常当他们打开应用程序时,他们可以转到提交内容页面。因此,提交视图基本上是我的主要观点。

要访问设置,我在提交视图上有一个小齿轮按钮,可以将用户带到设置页面。在设置页面上,我有一个注销按钮,用于从钥匙串中删除您的用户名和密码。

因此,如果您已退出应用程序,我希望后退按钮将您带到登录视图,否则它会将您带回提交视图,但我似乎无法控制后退按钮所需的内容用户。

我知道苹果指南说不要做这样的事情,但这似乎是一个明显的设计选择。如何在导航栏上覆盖后退按钮的操作?

2 个答案:

答案 0 :(得分:0)

只需隐藏导航栏并放置自定义导航栏并编写您想要按的名称,然后使用[self.navigationController popViewControllerAnimated: YES];提供后退按钮操作或选择您想要的任何视图控制器..

OR

您只需创建NavigationController的子类和override方法popViewControllerAnimated:

答案 1 :(得分:0)

您可以轻松地在用户默认值而不是钥匙串中保存用户信息。 用户登录时添加此

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

当用户注销时添加此

[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"UserAlreadyRegister"];

视图中的以下代码确实出现在您的提交视图中

-(void)viewDidAppear:(BOOL)animated{
    BOOL alreadyRegister = [[NSUserDefaults standardUserDefaults] boolForKey:@"UserAlreadyRegister"];
    if (alreadyRegister){
        [self.navigationController popViewControllerAnimated:YES];
    }
}