我正在处理应隐藏在登录视图后面的应用。
所以一般来说,我有一个标签导航控制器,应该可以容纳整个应用程序,我的逻辑是应用程序加载时,初始View控制器是标签导航控制器,它显示了用户登录时的第一个View如果它没有登录,则应该看到登录/注册页面。登录和注册页面都与Parse一起使用,它们都可以正常运行。它们在Tab视图控制器中的第一个View顶部以模态方式(使用segues)显示。
问题在于,当我登录时(并且我确认它有效!)登录视图控制器不会被解除以便查看选项卡视图控制器,我认为我可能在segue中搞砸了一些东西。如果用户未登录,则提供登录视图的segue是从受保护的视图(不是它的导航控制器,虽然我也测试过,但不起作用)来登录视图控制器。
此外,受保护页面中的代码如下所示:
override func viewDidAppear(animated: Bool) {
self.performSegueWithIdentifier("segueToLoginView", sender: self)
}
这是我的故事板的样子:
因此,登录segue以模态方式呈现,这是我的登录按钮代码。
@IBAction func loginButtonTapped(sender: AnyObject) {
let username = usernameTextField.text
let password = passwordTextField.text
// Sends to Parse to see if user exists
PFUser.logInWithUsernameInBackground(username!, password: password!) {
(user: PFUser?, error: NSError?) -> Void in
if user != nil {
// LOGIN Successful
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "isUserLoggedIn")
NSUserDefaults.standardUserDefaults().synchronize()
self.dismissViewControllerAnimated(true, completion: nil)
print("User logged in")
} else {
// Display Failed Login Alert message with confirmation
let failedLoginAttepmt = UIAlertController(
title: "Ups!",
message: "Something went wrong, try again...",
preferredStyle: UIAlertControllerStyle.Alert
)
let confirmAction = UIAlertAction(
title: "OK!",
style: UIAlertActionStyle.Default)
{ action in
self.dismissViewControllerAnimated(true, completion: nil)
}
failedLoginAttepmt.addAction(confirmAction)
self.presentViewController(failedLoginAttepmt, animated: true, completion: nil)
print("Could not find the user")
}
并且这行代码self.dismissViewControllerAnimated(true, completion: nil)
应该关闭模态显示的登录视图控制器,因为我在控制台中看到了print语句。
我的错误在哪儿?
答案 0 :(得分:0)
呃,我明白了。
我忘了添加用于检查用户是否实际登录的逻辑!如果您没有逻辑,View控制器将一次又一次地向您显示登录视图控制器。