所以我在前一段时间发布了一个问题,可以在How to reset an iOS application when a user clicks the "sign out button"?
看到按照建议我做了一个注销按钮,用户将其带到主屏幕,然后他们可以注册或再次登录。我发现的是,当一个新用户登录时,我看到拾取器中旧用户的某些价值,UITextView ETC
有没有办法重置应用程序状态,还是我必须走很长的路,确保每个插座都设置为默认值?这是否是某个地方糟糕的编程习惯的标志?
答案 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 ......