gpt4 book ai didi

swift - Tableview reloadData() 不起作用

转载 作者:行者123 更新时间:2023-11-30 11:52:56 26 4
gpt4 key购买 nike

有人可以帮助我吗?我正在使用 tableView 并尝试用用户使用 Bar Button 项输入的值填充它,但是每当我单击保存警报操作时, self.tableView.reloadData() 不起作用!

代码如下:

import UIKit  
class ViewController: UIViewController {
var names:[String]=[]
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
self.title="The List"
tableView.register(UITableViewCell.self, forCellReuseIdentifier:
"Cell")
}

@IBAction func addName(_ sender: UIBarButtonItem) {
let alert = UIAlertController(title: "New Name",
message: "Add a new name",
preferredStyle: .alert)

let saveAction = UIAlertAction(title: "Save",
style: .default) {
[unowned self] action in

guard let textField =
alert.textFields?.first,
let nameToSave = textField.text
else {
return
}

self.names.append(nameToSave)
self.tableView.reloadData()
}

let cancelAction = UIAlertAction(title: "Cancel",
style: .default)

alert.addTextField()

alert.addAction(saveAction)
alert.addAction(cancelAction)

present(alert, animated: true)

}
}
extension ViewController:UITableViewDataSource{
func tableView(_ tableView: UITableView, numberOfRowsInSection section:
Int) -> Int {
return names.count
}
func tableView(_ tableView: UITableView,cellForRowAt indexPath:
IndexPath)-> UITableViewCell {

let cell = tableView.dequeueReusableCell(withIdentifier:
"Cell",for: indexPath)
cell.textLabel?.text = names[indexPath.row]
return cell
}
}

谁能找到这个错误吗?

最佳答案

我建议验证在首次加载该 View Controller 时是否正在调用数据源方法(例如,numberOfRowsInSection)。因此,在检查当您点击“保存”警报操作时是否调用 reloadData 之前,您会知道您确实正确设置了数据源。我使用您的代码设置了一个项目,一切正常:在 UIAlertController 中添加了一个名称,点击“保存”,调用了 reloadData,并且表格显示了新名称。只需将其添加到 viewDidLoad 即可:

tableView.dataSource = self

还要确保您的表格 View 单元格具有在界面构建器中指定的重用标识符。选择 TableView 单元格,并在属性检查器中确保“标识符”字段填充的名称与您在代码中设置的名称相同(例如 forCellReuseIdentifier)。

希望这有帮助。

关于swift - Tableview reloadData() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48153327/

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