我一直在尝试在swift中为iOS应用程序实现登录/注销流程.这是我的故事板 -
在主视图控制器(蓝屏)中,我实现了以下代码来检测用户是否已经登录,然后自动将它们带到表视图控制器 -
override func viewDidAppear(animated:Bool){
if PFUser.currentUser() != nil {
self.performSegueWithIdentifier("test", sender: self)
}
Run Code Online (Sandbox Code Playgroud)
问题是,当我通过其中一个绿色屏幕登录或登录时,表格视图导航栏显示不同.当用户打开应用程序并且已登录时,"注销"按钮会正确显示,但是,通过绿色屏幕登录或登录,导航栏包含"<返回"按钮.
有人可以解释如何在故事板中以及在Swift中以编程方式实现登录/注销流程.我已经看到了一些Objective-C示例,但似乎无法在Swift中找到一个.如果有人有一个很好的例子,那将非常有帮助.
我在 Xcode 7 beta 4 中创建了一个故事板,并使用 Parse.com 来存储我的数据。我的故事板包含一个带有“登录”和“注册”按钮的初始屏幕,这些按钮将用户(使用模式转场)导航到各自的屏幕(登录和注册屏幕是嵌入在两个单独的导航控制器中的两个单独的屏幕)。从登录屏幕,我创建了一个到新视图控制器的推送序列(这是登录后屏幕)。进入注册和登录屏幕没有任何问题。
问题是当用户通过登录屏幕成功登录时。当我输入有效的用户凭据并单击“登录”时,它会转至下一个屏幕(导航栏上带有 <“登录”),然后立即再次转至不存在的屏幕(导航栏上带有 <“返回”)导航栏)。有谁知道为什么会发生这种情况?我只是希望 Segue 将用户带到下一个屏幕...我不确定为什么它要在两个屏幕之间转换。
这是我在 LoginViewController.swift 中的“登录”按钮操作的代码:
@IBAction func loginButton(sender: AnyObject) {
if emailAddressLogin.text == "" || emailAddressPassword.text == "" {
displayAlert("Login Error", message: "Please enter a valid username and password")
} else {
activityIndicator = UIActivityIndicatorView(frame: CGRectMake(0, 0, 50, 50))
activityIndicator.center = self.view.center
activityIndicator.hidesWhenStopped = true
activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.Gray
view.addSubview(activityIndicator)
activityIndicator.startAnimating()
UIApplication.sharedApplication().beginIgnoringInteractionEvents()
var errorMessage = "Please try again"
PFUser.logInWithUsernameInBackground(emailAddressLogin.text!, password: emailAddressPassword.text!, block: { (user, error) -> Void in
self.activityIndicator.stopAnimating()
UIApplication.sharedApplication().endIgnoringInteractionEvents() …Run Code Online (Sandbox Code Playgroud)