首页 > 解决方案 > 如何将字典从一个视图控制器类传递到另一个?SWIFT

问题描述

我正在尝试在一个视图控制器中列出用户及其密码,将该信息保存在字典中,然后将该字典发送到另一个视图控制器,要求用户输入他们的用户名/密码组合以授权登录。(键是用户名,值是密码)。有没有办法可以将字典从 SecondVC 发送到 FirstVC?

First View Controller

class ViewController: UIViewController, UITextFieldDelegate {
    @IBOutlet weak var Username: UITextField!
    
    @IBOutlet weak var Verification: UILabel!
    @IBOutlet weak var Password: UITextField!
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        Username.delegate = self
        Password.delegate = self

    }
    
    var usersDict = [String : String]()
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if let des = segue.destination as? AccountViewController {
            des.usersDict = usersDict
        }
    }
    


    @IBAction func Authorization(_ sender: Any) { 
        for ( key , value ) in usersDict{
            let v = key.count
            var start = 0
            if start <= v{
                if Username.text == key{
                    if Password.text == value{
                        Verification.text = "Looks Good"
                    }
                }
                else{
                    start += 1
                }
            }
            else{
                Verification.text = "Yikes"
            }
            
            
        }
        


    }
    
}

Second View Controller
class AccountViewController: UIViewController, UITextFieldDelegate {

    @IBOutlet weak var CreateUsername: UITextField!
    @IBOutlet weak var CreatePassword: UITextField!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        CreateUsername.delegate = self
        CreatePassword.delegate = self

        // Do any additional setup after loading the view.
    }
    
    var usersDict = [ String : String ]()

    @IBAction func MakeANewAccount(_ sender: Any) {
        usersDict[CreateUsername.text!] = CreatePassword.text!
    }
    

}

我在那里制作了字典,但它只会在开始时发送,并且在创建原始帐户后不会更新。(它正在发送的字典是空的)

标签: iosswiftxcodedictionary

解决方案


用segue在里面添加这个方法ViewController

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if let des = segue.destination as? AccountViewController {
        des.usersDict = yourDicHere
    }
}

推荐阅读