2011-06-16 61 views
1

所以我张贴的问题而回,可在可见:How to reset an iOS application when a user clicks the "sign out button"?如何在用户点击退出后重置iOS应用程序状态?

接着我做了一个登出按钮的建议,其中凡被带到主屏幕,在这里他们可以注册或再次登录的用户。我发现的是,当一个新用户登录时,我看到来自于旧用户在拾取器中的一定价值,UITextView ETC

有没有办法重置应用程序状态,还是必须走长路线确保每个插座都设置为默认值?这是否是某个地方糟糕的编程实践的标志?

+0

什么是浏览器流量?你使用导航控制器的第一个视图控制器是登录视图控制器吗? – 2011-06-16 06:04:25

+0

基于选项卡的根控制器,每个选项卡都有一个导航控制器。启动或注销后,登录/密码视图将被覆盖。 – jini 2011-06-16 06:11:43

回答

0

好的第一件事你必须做的是让你的主视图执行退出委托成功。在此,您必须重置所有数据和视图,这些数据和视图将在新用户登录时重新创建/重新填充。

为了实现此目的,您可以分析您的代码/逻辑,以了解新用户登录时创建的内容并在委托方法中重置所有这些以注销。这是通用答案的方式,但重置数据是实现这一目标的方法。

或者,您可以在登录成功时重新创建主视图,即删除主视图并登录成功后,为新用户重新创建它。

0

最简单的方法是创建一组新的视图控制器,并将它们设置为UITabBarController对象的viewControllers,但它不一定总是最便宜的。这将是你需要检查它是否可行的事情。

否则,您将不得不考虑将重置方法添加到视图控制器。如果选项卡是导航控制器,则popToRootViewControllerAnimated:并重置第一个视图控制器。与前一种方法相比,这是一个努力实施。

1

Cocoa way = KVO(关键值观察)。有兴趣了解登录状态更改的控制器将自己注册为登录组件/控制器/登录时的任何实例的观察者。

登录/注销后,此组件会通知所有观察者有关状态更改。然后执行所有必要的操作:在登录后使用用户数据填充UI或在注销后重置UI。

非常灵活的模式,避免组件之间不必要的依赖关系。

0

当你去新的控制器只是再次分配整个控制器。一旦导航完成,不要忘记释放。

继承人的示例代码示例做

-(void)goToFormController 
{ 
    FormViewController *objFormViewController = [[FormViewController alloc]initWithNibName:@"FormViewController" bundle:nil]; 
    [self.navigationController pushViewController:objFormViewController animated:YES];  
    [objFormViewController release]; 
} 

快乐iCoding ...

+0

在Swift中安全吗? – 2017-03-12 17:11:17

相关问题