gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 02:16:28 25 4
gpt4 key购买 nike

我几乎已经构建了一个应用程序,但我想在显示 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com