ios - 从 loginviewcontroller 获取用户邮箱并显示在 revealview 的标签中

标签 ios xcode swift swrevealviewcontroller

我几乎已经构建了一个应用程序,但我想在显示 View 或侧 View 的标签中显示当前用户的电子邮件地址。显示 View 是一个 TableView Controller ,登录 View 是一个简单的 View Controller 。

我在登录 View Controller 中使用了以下代码:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if let target = segue.destinationViewController as? backTableVC {
           target.labelname = NSUserDefaults.standardUserDefaults().stringForKey("currentuser")
        }
    }

以及显示 View Controller 中的以下代码:

var labelname:String? {
    didSet {
    emailLabel!.text = labelname
    }
}
 @IBOutlet weak var emailLabel: UILabel! {
    didSet {
        emailLabel.text = labelname
    }
}

override func viewDidLoad() {
super.viewDidLoad()

emailLabel.text = labelname     
}

我将断点放在此代码的最后一行,但我得到 nil 作为标签名称的值,并且它也不会更改显示 View 标签的标签中的值。

登录 View Controller 的代码如下

import UIKit

登录 View Controller 类:UIViewController、UITextFieldDelegate {

@IBOutlet weak var userPasswordTextField: UITextField!
@IBOutlet weak var userEmailTextField: UITextField!
var currentuseremail:String?
override func viewDidLoad() {
    super.viewDidLoad()
    self.userEmailTextField.delegate = self
    self.userPasswordTextField.delegate = self

    // Do any additional setup after loading the view.
}
func textFieldShouldReturn(userText: UITextField) -> Bool {
    userText.resignFirstResponder()
    return true;
}
override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}
var userEmail:String?
var userPassword:String?
@IBAction func loginButton(sender: AnyObject) {
    if (userEmailTextField.text! != "")
    {
        userEmail = userEmailTextField.text}
    else {
        alert("Please Enter Your email")
    }
    if (userPasswordTextField != ""){
        userPassword = userPasswordTextField.text}
    else {
        alert("Please Enter Password")
    }
    let userEmailStored = NSUserDefaults.standardUserDefaults().stringForKey("userEmail")
    let userPasswordStored = NSUserDefaults.standardUserDefaults().stringForKey("userPassword")

    if(userEmailStored == userEmail) {
        if(userPasswordStored == userPassword) {
            // Login is Successfull
            currentuseremail = userEmail
            NSUserDefaults.standardUserDefaults().setObject(currentuseremail, forKey: "currentuser")
            NSUserDefaults.standardUserDefaults().setBool(true, forKey: "isUserLoggedIN")

            NSUserDefaults.standardUserDefaults().synchronize()
            self.dismissViewControllerAnimated(true, completion: nil)
        }
    }
    else {
        let myAlert = UIAlertController(title: "Alert", message: "Email or Password doesn't match", preferredStyle: .Alert)
        let okAction = UIAlertAction(title: "OK", style: .Default, handler: nil)
        myAlert.addAction(okAction)
        self.presentViewController(myAlert, animated: true, completion: nil)

    }

}
func alert(message:String) {
    let myalert = UIAlertController(title: "Alert", message: message, preferredStyle: .Alert)
    let action = UIAlertAction(title: "OK", style: .Default, handler: nil)
    myalert.addAction(action)
    self.presentViewController(myalert, animated: true, completion: nil)
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if let target = segue.destinationViewController as? backTableVC {
       target.labelname = NSUserDefaults.standardUserDefaults().stringForKey("currentuser")
    }
}

最佳答案

好吧,userEmailStored 看起来并不是您想象的那样。

所以尝试打印出 userEmailStored

let userEmailStored = NSUserDefaults.standardUserDefaults().stringForKey("userEmail")
print(userEmailStored)

然后打印出用户Email

print(userEmail)

据我所知,userEmailStored 将始终为 nil,因为没有 NSUserDefaults.standardUserDefaults().setString("userEmail") 或任何确切的方法。

我的意思是,在您可以访问使用字符串“userEmail”保存的值之前,您必须将某些内容保存到“userEmail”。我没有看到这种情况发生,因此无论何时您访问 NSUserDefaults.standardUserDefaults().stringForKey("userEmail"),它都会返回“”或 nil

关于ios - 从 loginviewcontroller 获取用户邮箱并显示在 revealview 的标签中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38031985/

相关文章:

ios - 除非用户登录,否则无法从Firebase检索数据

ios - 无法将新的 xib 添加到 View Controller

ios - Xcode 使用了错误的本地化

ios - 字典中对成员 'subscript' 的引用不明确

ios - 为什么主视图在 WatchKit 应用程序上变得可滚动?

ios - 如何在 IOS Swift 中的 WKWebView 顶部添加边距

ios - 如何判断文件是否已发送或是否在 iOS 邮件的发件箱中

ios - 如何加速滞后的 Swift 文件?

ios - Xcode 10 : Load the same . 项目目标和单元测试目标中的xml文件

ios - 如何在核心数据中存储数组(Swift)