在不同条件下更改初始加载屏幕

时间:2015-03-02 16:42:20

标签: ios objective-c

我有2个视图,如下图所示。第一个视图是ViewController,第二个是TableViewController

用户首次安装并运行应用程序后,他/她将看到查看号码(1)(如图所示)。此后,当用户第二次打开该应用程序时,他/她想要看到第二个({2)viewcontroller

我如何编程?

enter image description here

注意:例如,在Viber中,用户将首先看到输入电话号码视图控制器,一旦用户成功登录,他就会直接看到所有联系人视图。我期待实现相同的功能。有人能告诉我这是怎么做到的吗?

我遇到的解决方案是当用户成功登录时,我设置了NSUserDefaults。

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:loginSuccess forKey:@"yes"];
[defaults synchronize];

此后我检查是否在didFinishLaunchingWithOptions方法中设置了此项。这是正确的方法吗?

2 个答案:

答案 0 :(得分:0)

使用NSUserDefaults是跟踪要显示的视图的好方法。要实际显示正确的视图,您可以为应用创建UITableViewController根视图控制器。然后在其viewDidLoad中检查您在NSUserDefaults中存储的值。如果您需要显示一次性控制器,那么您只需使用presentViewController:vc animated: NO即可。这将使用户看起来他们只在一次性控制器上启动,但在剩下的时间内,您将按预期使用“正常”流程。

答案 1 :(得分:0)

使用NSUserDefaults检查第二个呼叫。开始时检查任何键的值。当它为null时,它是安装后第一次执行应用程序。之后用非常关键存储东西。

您可以在应用程序委托中进行检查(在应用程序didLodWithOptions中),然后显示这个或那个。

或者在tableview控制器中执行checkDidLoad中的检查。您可以简单地推送到另一个视图(或以模态方式显示)。当您希望用户在介绍结束后立即返回到tableview时,这非常方便。然后简单地丢弃tableview上的其他视图。