繁体   English   中英

Append 单击按钮后要排列的名称,然后将其发送到另一个视图 controller

[英]Append a name to array after a button is clicked and then send it to another view controller

我正在尝试在我的应用程序中制作一个最喜欢的按钮,如果点击最喜欢的图像,那么它会将 append 这个地方的名称传递给一个数组,然后将该数组传递给 UIViewController 内的表格视图。我已经知道了传递一个内部具有预定值的数组,但是当我尝试将 append 名称放入数组然后传递它时,下一个视图 controller 中的数组显示为空。

这是我的第一个视图 controller:

    var fave: [String] = []

    @IBAction func faveTapped(_ sender: UIButton) {
        fave.append(name)
        let defaults = UserDefaults.standard
        defaults.set(fave, forKey: "faves")
    }

    override func viewDidLoad() {
        super.viewDidLoad()
    }

我在我的第二个视图 controller 中有这个表视图:

class nextViewController: UIViewController {
    
    var newArray: [String] = []

    @IBOutlet var tableView: UITableView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        if let oldArray: [String] = UserDefaults.standard.object(forKey: "faves") as? [String] {
            newArray = oldArray
        }
        
        print(newArray)
    }
}

extension FavouritesViewController: UITableViewDataSource {
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return newArray.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let rowcell = tableView.dequeueReusableCell(withIdentifier: "rowcell", for: indexPath)

        rowcell.textLabel?.text = newArray[indexPath.row]

        return rowcell
    }
}

当您 append 新数据时,您没有保存到UserDefaults viewDidLoad执行时,数组仍然是空的。 所以这样做:

@IBAction func faveTapped(_ sender: UIButton) {
    fave.append(name)
    let defaults = UserDefaults.standard
    defaults.set(fave, forKey: "faves")
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM