【问题标题】:How to update TableView data in Swift如何在 Swift 中更新 TableView 数据
【发布时间】:2019-09-06 15:48:08
【问题描述】:

我正在尝试重新加载我的TableView 的数据,该数据在应用程序启动时成功重新加载,但在应用程序运行期间没有。我有一个视图控制器,我使用core data 存储对象,然后是第二个视图控制器,我在其中加载相同的对象。

viewDidLoad() 方法:

let fetchRequest: NSFetchRequest<Workout> = Workout.fetchRequest() 
do {
    let workouts = try PersistenceService.context.fetch(fetchRequest)
    self.routines = workouts
    } catch {}
exerciseTableView.reloadData() // Works

此方法中的reloadData() 函数有效,因为每次应用启动时都会刷新数据。我尝试使用我在第二个视图控制器上打开下拉菜单的按钮之一重新加载表数据。

按钮动作方法:

@IBAction func selectRoutineButtonPressed(_ sender: Any) {
        DispatchQueue.main.async {
            self.exerciseTableView.reloadData() // Not Working
        }
        if exerciseTableView.isHidden == true {
            animate(toggle: true, togglingTableView: exerciseTableView)
        }
        else {
            animate(toggle: false, togglingTableView: exerciseTableView)
        }
    }

我最初没有DispatchQueue 行,但在尝试找到解决方案后我添加了它。但是当我按下按钮时,表格数据仍然没有改变。

任何建议将不胜感激,谢谢。

【问题讨论】:

  • 您必须从本地存储中获取更新的数据,然后尝试重新加载 tableview。

标签: ios swift uitableview core-data


【解决方案1】:

这样试试

@IBAction func selectRoutineButtonPressed(_ sender: Any) {

let fetchRequest: NSFetchRequest<Workout> = Workout.fetchRequest() 
do {
    let workouts = try PersistenceService.context.fetch(fetchRequest)
    self.routines = workouts
    } catch {}

    DispatchQueue.main.async {
        self.exerciseTableView.reloadData() // Not Working
    }
    if exerciseTableView.isHidden == true {
        animate(toggle: true, togglingTableView: exerciseTableView)
    }
    else {
        animate(toggle: false, togglingTableView: exerciseTableView)
    }
}

希望这对你有用。

【讨论】:

  • 这行得通。我将 fetchRequest 块添加到它自己的方法中,然后从 viewDidLoad() 和 selectRoutineButtonPressed() 中调用此方法。谢谢。
猜你喜欢
  • 2015-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-18
  • 1970-01-01
  • 2021-05-30
  • 1970-01-01
相关资源
最近更新 更多