[英]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.