RjC*_*RjC 5 arrays tableview ios swift
我有一个带有两个视图的选项卡栏:
然后我有一个数组,该数组将从视图控制器中更新为新内容(例如,仅附加新字符串)。
该数组填充表视图。现在,当应用程序启动时,表视图显示所有数组内容,但是当我通过选项卡栏移动到视图控制器、将内容添加到数组并通过选项卡栏移回表视图时,我无法更新表视图以便它从数组中提取新内容。
我尝试在和tableview.reloadData()中使用,但表视图不会重新加载,并且仍然显示它最初在应用程序启动时加载的数据,但不显示新内容。viewDidAppearviewDidLoad
override func viewWillAppear(_ animated: Bool) {
tableView.reloadData()
weightArray = UserDefaults.standard.array(forKey: "favorites") as! [String]
}
Run Code Online (Sandbox Code Playgroud)
这就是我填充表格视图的方式:
// 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
}
Run Code Online (Sandbox Code Playgroud)
您的reloadData()通话是在更新数组之前进行的。
应该是更新数据源后:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
weightArray = UserDefaults.standard.array(forKey: "favorites") as! [String]
tableView.reloadData()
}
Run Code Online (Sandbox Code Playgroud)
无论如何,您可以使用didSet数据源对象的属性观察器。
//your weightArray declaration
var weightArray = [String]() {
didSet {
tableView.reloadData()
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以这样做:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
weightArray = UserDefaults.standard.array(forKey: "favorites") as! [String]
}
Run Code Online (Sandbox Code Playgroud)
这样,每当您更改阵列时,tableView都会重新加载。
| 归档时间: |
|
| 查看次数: |
10020 次 |
| 最近记录: |