我正在使用 parse.com。我有一个自定义类 chwRootViewController
的 UINavigationController
,它被设置为初始 View 。
当用户成功登录时运行:
// Sent to the delegate when a PFUser is logged in.
- (void)logInViewController:(PFLogInViewController *)logInController didLogInUser:(PFUser *)user {
[self dismissViewControllerAnimated:YES completion:NULL];
}
现在 chwMainviewController
是登录方法关闭 chwRootViewController
时显示的 UIViewController
。在主视图 Controller 中,我有一个用于单击注销按钮的 IBAction
,如下所示:
- (IBAction)logoutButtonClicked:(id)sender {
[PFUser logOut]; // Log out
// Return to login page
if (![PFUser currentUser]) {
[self.navigationController popToRootViewControllerAnimated:YES];
}
问题是最后一行将用户返回到登录屏幕,但现在 chwMainViewController
不再准备好等待登录屏幕。当您第二次登录时,当 chwRootViewController
被关闭时,只有黑屏。我做错了什么?
最佳答案
您可以使用以下步骤:
在您的初始 view controller
即 chwMainviewController.m
文件中,执行以下操作:
实现
viewDidAppear
方法,如下所示:- (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:YES]; if (![PFUser currentUser]) { [self showLogInPage]; } }
在
showLogInPage
方法中编写显示解析登录页面的代码
,如下所示:- (void)showLogInPage { PFLogInViewController *logInController = [[PFLogInViewController alloc] init]; logInController.delegate = self; logInController.fields = PFLogInFieldsUsernameAndPassword | PFLogInFieldsLogInButton | PFLogInFieldsSignUpButton | PFLogInFieldsFacebook; PFSignUpViewController *signUpController = [[PFSignUpViewController alloc] init]; signUpController.delegate = self; logInController.signUpController = signUpController; [self presentViewController:logInController animated:YES completion:nil]; }
最后,按如下方式实现您的
logoutButtonClicked
:- (IBAction)logoutButtonClicked:(id)sender { [PFUser logOut]; [self showLogInPage]; }
注意:
如果您没有使用 storyboard,请确保将 chwMainviewController
设置为您的 rootViewController
应用程序 didFinishLaunchingWithOptions
方法。
希望对您有所帮助!
关于ios - 注销 PFuser 将您带回登录屏幕,但 navigationController 现在是空白的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21107776/