如何在用户单击退出后重置iOS应用程序状态?

时间:2011-06-16 06:02:15

标签: iphone ios

所以我在前一段时间发布了一个问题,可以在How to reset an iOS application when a user clicks the "sign out button"?

看到

按照建议我做了一个注销按钮,用户将其带到主屏幕,然后他们可以注册或再次登录。我发现的是,当一个新用户登录时,我看到拾取器中旧用户的某些价值,UITextView ETC

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

4 个答案:

答案 0 :(得分:1)

可可方式= KVO(键值观察)。有兴趣了解登录状态更改的控制器将自己注册为登录组件/控制器/登录时的观察者。

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

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

好的,首先要做的是让主视图实现注销成功的委托。在此,您必须重置所有数据和视图,这些数据和视图将在新用户登录时重新创建/重新填充。

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

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

答案 3 :(得分:0)

当你去新的控制器时,只需再次分配整个控制器。导航完成后别忘了发布。

下面是示例代码示例

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

快乐的iCoding ......