gpt4 book ai didi

ios - Swift:每次出现 tableview 时如何重新加载新内容(例如数组)?

转载 作者:搜寻专家 更新时间:2023-10-31 22:39:35 25 4
gpt4 key购买 nike

我有一个带有两个 View 的标签栏:

  • 桌面 View
  • 查看 Controller 以添加数据

然后我有一个数组,它将使用新内容从 View Controller 更新(例如,只需附加新字符串)。

这个数组填充了 TableView 。现在,当应用程序启动时,表格 View 显示所有数组内容,但是当我通过选项卡栏移动到 View Controller ,将内容添加到数组并通过选项卡栏移回表格 View 时,我无法更新表格 View 以便它从数组中提取新内容。

我尝试在 viewDidAppearviewDidLoad 中使用 tableview.reloadData(),但是 tableview 没有重新加载并且仍然显示它最初在应用程序启动时加载的数据,但不是新内容。

override func viewWillAppear(_ animated: Bool) {
tableView.reloadData()
weightArray = UserDefaults.standard.array(forKey: "favorites") as! [String]
}

这是我填充表格 View 的方式:

// MARK: - Table view data source

override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return weightArray.count
}


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

let weights = weightArray[indexPath.row]
cell.textLabel?.text = weights

return cell
}

最佳答案

您的 reloadData() 调用是在更新数组之前。

应该是在更新数据源之后:

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)

weightArray = UserDefaults.standard.array(forKey: "favorites") as! [String]
tableView.reloadData()
}

无论如何,您可以使用数据源对象的 didSet 属性观察器。

//your weightArray declaration
var weightArray = [String]() {
didSet {
tableView.reloadData()
}
}

然后你可以做:

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)

weightArray = UserDefaults.standard.array(forKey: "favorites") as! [String]
}

这样,无论何时更改数组,tableView 都会重新加载。

关于ios - Swift:每次出现 tableview 时如何重新加载新内容(例如数组)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50060572/

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