App崩溃,如果在滚动UITableView时使用popViewController

时间:2019-04-10 11:40:06

标签: ios swift uitableview asynchronous

你好,我在UIViewController里面有UINavigationController,里面有UITableView。当用户点击“后退”按钮(这会触发popViewController的{​​{1}}功能时,我正在重置数据模型。如果我UINavigationController,在滚动popViewController时,App在UITableView函数上崩溃。什么会导致此问题?

cellForRowAt 函数:

cellForRowAt

后退按钮

class MyViewController: UIViewController, TableView... {

var myChecksModel: MyChecksModel!
.
.
.

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell: MyChecksListTableViewCell = tableView.dequeueReusableCell(withIdentifier: cellId) as? MyChecksListTableViewCell ??
    MyChecksListTableViewCell(style: .default, reuseIdentifier: cellId)
let check = self.myChecksModel.chequeList[indexPath.row]
cell.myChecksData = check
return cell
}

重置模型功能

@objc func backButtonTapped(_ sender: UIButton) {
DispatchQueue.main.async {
    self.myChecksModel.resetModel()
    self.navigationController?.popViewController(animated: true)
}
}

1 个答案:

答案 0 :(得分:2)

您的应用因

而崩溃
  

索引超出范围

您应该致电

self.myChecksModel.resetModel()

override func viewDidDisappear(_ animated: Bool) {
      super.viewDidDisappear(animated)

      self.myChecksModel.resetModel()
}