我正在创建一个iOS应用程序,它在标签栏控制器上有一个登录系统。标签栏作为根控制器加载,如果用户未登录,则登录子视图将填充屏幕。由于标签栏控制器的第一个视图已加载,因此viewWillAppear:
也是如此。我使用viewWillAppear:
在每次加载时重新加载表视图。该系统运行良好。
但是,我想知道如何在第二次加载时(即在用户登录后)运行一个函数(void
),以提供特定于用户的表视图而不是在每个视图上加载一个 - 这就是为什么我没有使用viewDidLoad:
,因为它只运行一次。
答案 0 :(得分:1)
添加一个整数实例变量,在每个viewWillAppear上递增它,并仅在实例变量大于1时运行您的函数
答案 1 :(得分:1)
是的,我有更好的&简单的解决方案,而不是采取一些变量,因为当我们重新启动应用程序时不会保留最后的值。
为此您需要使用数据库,但需要大量编码。最好使用NSUserDefaults来存储系统首选项。
Write this in your viewWillAppear:
if([[NSUserDefaults standardUserDefaults]valueforKey:@"key"]==nil)
{
NSUserDefaults *default = [NSUserDefaults standardUserDefaults];
[default setValue:@"1" forKey:@"key"];
[default synchronize];
}
else
{
NSLog(@"Once you make successful login this value wont change till you make logout");
}
& now just change the value in NSUserDefaults while doing logout.
NSLog(@"%@",[[NSUserDefaults standardUserDefaults] valueForkey:@"key"]); // way to access this system dictionary.
有关 NSUserDefaults教程
的进一步参考希望这能解决某些问题。 :)
答案 2 :(得分:0)
如果您保留计数器,它将无法正常工作,因为用户可以在未登录的情况下多次打开您的视图。那么您应该如何保留用户的会话信息。当用户登录时填写此会话信息,否则不填写。每次用户想要打开此选项卡时,请检查此信息。