gpt4 book ai didi

ios - 使用TabViewController,保存数据时,TableView不更新

转载 作者:行者123 更新时间:2023-11-29 05:10:20 24 4
gpt4 key购买 nike

我当前的设置:TabViewController 连接到嵌入导航 Controller 中的两个 TableViewController。我可以在应用程序加载时以及在不同选项卡之间切换回来时毫无问题地更新表格 View 。当我打开另一个 tableviewcontroller 进行编辑时,我的问题出现了。当我从这个 View Controller 点击“保存”时,它会更新数据并保存所有内容,但是,无论我尝试什么,我的 tableView 都不会更新,除非我在不同的选项卡之间切换或关闭并重新打开应用程序。

我尝试过使用委托(delegate)来触发更新,我尝试过使用 NSNotificationCenter,但没有骰子。

其他人也遇到过这个问题吗?

这是我的保存功能:

    func saveDose(completion: (_ finished: Bool) -> ()) {
if searchName == "" {
guard let managedContext = appDelegate?.persistentContainer.viewContext else { return }
let dose = Dose(context: managedContext)

let doseNumberString = numberDosesText.text
let doseNumberInt = Int64(doseNumberString!) ?? 0

dose.name = nameText.text

dose.script = scriptText.text
dose.dosage = dosageText.text
// dose.doseInterval = doseInterval
dose.firstDose = datePicker.date
dose.numberDoses = doseNumberInt

dose.doseReminder = remindersSwitch.isOn

do {
try managedContext.save()
print("Data Saved")
completion(true)
} catch {
print("Failed to save data: ", error.localizedDescription)
completion(false)
}
} else {
update(name:searchName, firstDose: searchDate)
completion(true)
}
}

这是我调用它并加载回我的另一个表格 View 的地方。

    @IBAction func saveBtnPressed(_ sender: UIBarButtonItem) {
saveDose { (done) in
if done {
print("We need to return now")
navigationController?.popViewController(animated: true)
self.dismiss(animated: true, completion: nil)
} else {
print("Try again")
}
}
}

这是我在 View 出现时重新加载表格 View 的位置

    override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
print("View has been loaded back from other view")
self.fetchData()
self.tableView.reloadData()
print("View will appear")
}

这是我的 fetchData 和 loadData 函数

  func fetchData() {
loadData { (done) in
if done {
setEmptyView(Array: logArray.count)
}
}
}


func loadData(completion: (_ complete: Bool) -> ()) {
guard let managedContext = appDelegate?.persistentContainer.viewContext else { return }
let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Log")
do {
logArray = try managedContext.fetch(request) as! [Log]
print("Data Fetched No Issues")
completion(true)
} catch {
print("Unable to fetch data: ", error.localizedDescription)
completion(false)
}
}

我再次尝试了委托(delegate),并在其他运行良好的应用程序中使用了此代码。与标签栏 Controller 有关吗?

数据显然保存得很好,我只是无法让 tableView 正确更新。

保存后似乎没有调用 viewWillAppear 函数。我也尝试过使用委托(delegate)来强制更新表格 View ,但没有任何效果。

最佳答案

基本上你需要调用tableView.reloadData()。完成保存后。此外,您可以在 tableView 上使用 beginUpdatesendUpdates 对特定行执行动画。更多相关信息您可以引用This Link

关于ios - 使用TabViewController,保存数据时,TableView不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59745483/

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