Сбой приложения, если popViewController при прокрутке UITableView - PullRequest
2 голосов
/ 10 апреля 2019

Здравствуйте, у меня есть UIViewController внутри UINavigationController, в котором есть UITableView. Я сбрасываю свою модель данных, когда пользователь нажимает кнопку «назад» (которая вызывает функцию popViewController UINavigationController). Если я popViewController, при прокрутке 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)
}
}

Сброс функции модели

class MyChecksModel: Codable {
var chequeList: [MyClass] = []
func resetModel() {
self.chequeList = []
}

1 Ответ

2 голосов
/ 10 апреля 2019

Ваше приложение вылетает из-за

индекса вне пределов

Вы должны позвонить

self.myChecksModel.resetModel()

В

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

      self.myChecksModel.resetModel()
}
...