Ios 使用后如何删除堆栈中的UINavigationController第一个视图?

Ios 使用后如何删除堆栈中的UINavigationController第一个视图?,ios,iphone,uinavigationcontroller,Ios,Iphone,Uinavigationcontroller,我有一个UINavigationController,它有一个loginview,在应用程序加载后显示 一旦用户单击Login,我们将下一个视图推到堆栈上,它就会出现。我希望用户不能返回到loginview 在加载下一个视图后,如何从堆栈中删除loginview 注意:应用程序的唯一容器必须是UINavigationController我发现只要设置ViewControllers属性,就可以了 (我们使用C#和.NET构建带有MonoTouch的iPhone应用程序) 我发现只要设置ViewCo

我有一个
UINavigationController
,它有一个loginview,在应用程序加载后显示

一旦用户单击Login,我们将下一个视图推到堆栈上,它就会出现。我希望用户不能返回到
loginview

在加载下一个视图后,如何从堆栈中删除loginview


注意:应用程序的唯一容器必须是
UINavigationController

我发现只要设置ViewControllers属性,就可以了

(我们使用C#和.NET构建带有MonoTouch的iPhone应用程序)


我发现只要设置ViewControllers属性就可以了

(我们使用C#和.NET构建带有MonoTouch的iPhone应用程序)


通过将登录控制器的navigationItem上的backButtonItem设置为nil,移除back按钮

通过将登录控制器的navigationItem上的backButtonItem设置为nil,移除back按钮

在上述情况下,您的loginview控制器将被称为UINavigationController的根控制器

下面阅读如何删除UINavigationController的根控制器


在上述情况下,您的loginview控制器将被称为UINavigationController的根控制器

下面阅读如何删除UINavigationController的根控制器


您可以使用SetViewController:animated:修改控制器堆栈,但我建议您重新考虑是否确实希望登录视图控制器成为导航堆栈的根。当用户看到导航控制器时,他们希望在树状结构中组织的屏幕层次上下导航。改变那棵树的根在某种程度上破坏了这个比喻

考虑使用模态演示来传达登录体验不属于应用程序的主要层次导航结构这一事实。以下是几个选项:

A.从登录视图控制器开始,以模态方式呈现导航控制器

如果登录视图控制器始终是用户看到的第一个屏幕,则可以直接将其视图添加到窗口中,而无需导航控制器。然后,用户登录后,创建导航控制器并通过从登录视图控制器调用presentModalViewController:animated:来显示它

B.使用其真实根初始化导航控制器,并以模态方式呈现登录视图控制器


如果登录提示并不总是用户看到的第一个视图,特别是如果登录提示可以在其他上下文中弹出,则此选项可能值得考虑。例如,我在一个应用程序中使用了这种方法,该应用程序允许用户在脱机或匿名时访问某些部分。当用户尝试访问需要身份验证的内容时,登录提示会以模式显示。

您可以使用SetViewController:animated:修改控制器堆栈,但我建议您重新考虑是否确实希望登录视图控制器成为导航堆栈的根。当用户看到导航控制器时,他们希望在树状结构中组织的屏幕层次上下导航。改变那棵树的根在某种程度上破坏了这个比喻

考虑使用模态演示来传达登录体验不属于应用程序的主要层次导航结构这一事实。以下是几个选项:

A.从登录视图控制器开始,以模态方式呈现导航控制器

如果登录视图控制器始终是用户看到的第一个屏幕,则可以直接将其视图添加到窗口中,而无需导航控制器。然后,用户登录后,创建导航控制器并通过从登录视图控制器调用presentModalViewController:animated:来显示它

B.使用其真实根初始化导航控制器,并以模态方式呈现登录视图控制器


如果登录提示并不总是用户看到的第一个视图,特别是如果登录提示可以在其他上下文中弹出,则此选项可能值得考虑。例如,我在一个应用程序中使用了这种方法,该应用程序允许用户在脱机或匿名时访问某些部分。当用户尝试访问需要身份验证的内容时,登录提示会以模式显示。

使用NSUserdefault设置bool check值以验证是否显示登录页面或下一页

例如,登录页面时,您将获得用户名密码,然后将其发送到服务器,您将收到成功或失败的结果

如果成功,则将NSuserdefault中的Bool设置为yes

并在成功登录后按Next View

如果用户下次访问你的应用程序,你必须首先检查该bool值的NSuserdefault

根据这一点,你可以推下一个可视控制器或登录页面

就这样

在nsuserdefault中,u可以为键指定字符串,而不是bool

成功登录后 将isLogined设置为yes

NSUserDefaults *std = [NSUserDefaults standardUserDefaults];

[std setObject:@"yes" forKey:@"isLogined"];
如果没有,则设置否

在“推送前登录”页面中,只需验证isLogined是或否

根据这一点,你可以推登录页面或下一页

核实


[std stringforkey:@“已登录”]

使用NSUserdefault设置bool check值,以验证是否显示登录页面或下一页

例如,登录页面时,您将获得用户名密码,然后将其发送到服务器,您将收到成功或失败的结果

如果成功,则将NSuserdefault中的Bool设置为yes

并在成功登录后按Next View

如果用户下次访问你的应用程序,你必须首先检查该bool值的NSuserdefault

根据这一点,你可以推下一个可视控制器或登录页面

就这样

在nsuserdefault中,u可以为键指定字符串,而不是bool

成功登录后 集伊斯洛吉
NSUserDefaults *std = [NSUserDefaults standardUserDefaults];

[std setObject:@"yes" forKey:@"isLogined"];