gpt4 book ai didi

swift - 当用户将项目插入数据库时​​如何刷新 TableView ?

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

当用户将项目插入数据库然后单击后退按钮返回 TableView 时, TableView 不会显示新项目。我必须停止该应用程序,然后再次运行它才能显示新项目。我的数据库工作得很好,所以我不认为这是问题所在。

我确实在 ViewDidLoad() 内的 mainController 中再次重新加载数据库。我还尝试在 ViewDidLoad() 内执行 tableView.reloadData() ,但这没有任何作用。

class MainViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

@IBOutlet weak var tableView: UITableView?
let mainDelegate = UIApplication.shared.delegate as! AppDelegate


override func viewDidLoad() {
super.viewDidLoad()
// read from the database
mainDelegate.readDataFromDatabase()

}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

return mainDelegate.people.count

}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

let cell = tableView.dequeueReusableCell(withIdentifier: "BookTableViewCell") as! BookTableViewCell

let rowNum = indexPath.row

cell.lblTitle?.text = mainDelegate.people[rowNum].title
cell.accessoryType = .disclosureIndicator

return cell
}



class NewBookItemViewController: UIViewController, UITextFieldDelegate, UINavigationControllerDelegate {

@IBOutlet weak var titletxt : UITextField!

@IBAction func buttonSave(sender: UIButton){
// step 18b - instantiate Data object and add textfield data
let person : Data = Data.init()
person.initWithData(theRow: 0, thetitle: title)

let mainDelegate = UIApplication.shared.delegate as! AppDelegate

// step 18c - do the insert into db
let returnCode : Bool = mainDelegate.insertIntoDatabase(person: person)


}

最佳答案

你需要

override func viewWillAppear(_ animated:Bool) {
super.viewWillAppear(animated)
mainDelegate.readDataFromDatabase()
tableView.reloadData()
}

由于 viewDidLoad 在 vc 加载时被调用一次,而且 appDelegate 没有责任做这样的事情,请考虑使用一个处理数据库读/写的 dataSource 类

关于swift - 当用户将项目插入数据库时​​如何刷新 TableView ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55679183/

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