Как удалить ячейку UITableView с помощью кнопки удаления? - PullRequest
0 голосов
/ 04 января 2019

Я добавил кнопку копирования, редактирования и удаления в каждую ячейку, созданную моим UITableView (каждая ячейка создается по требованию пользователя). Кнопки копирования и редактирования закодированы одинаково и работают просто отлично. Однако каждый раз, когда я нажимаю кнопку удаления, я получаю сообщение об ошибке «Тема 1: сигнал SIGBART». Не уверен, как исправить. Любая помощь будет оценена.

Некоторая полезная информация: - Каждая ячейка является разделом, и каждый раздел имеет одну строку в табличном представлении - кнопки соответствующим образом связаны в коде для представления ячейки и соответствующим образом делегированы для использования в представлении таблицы.

Я новичок в swift, поэтому, пожалуйста, потерпите меня. Приведенный ниже код взят из моего UITableViewController. Я пытаюсь удалить ячейку из индекса раздела и объект, на который она ссылается. Затем я пытаюсь перезагрузить данные в представлении UITable. Однако в тот момент, когда нажимается кнопка удаления, я просто получаю сообщение об ошибке.

func hashtagCellDidTapDelete(_ cell: HashtagCell) {
    if tableView.indexPath(for: cell) != nil {
        let indexPath = tableView.indexPath(for: cell)
        tableView.deleteSections([(indexPath?.section)!], with: .fade)
        hashtagSource.hashtags.remove(at: (indexPath?.section)!)
        tableView.reloadData()
    }
}

Ответы [ 2 ]

0 голосов
/ 05 января 2019

мы не можем удалить ячейку uitableview вместо удаления записи из вашего массива, которая передается в вашем методе источника данных, например

func numberOfSections(in tableView: UITableView) -> Int { }

или

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
    {}
0 голосов
/ 04 января 2019

Сначала удалите элемент из источника данных, а затем обновите пользовательский интерфейс.

И используйте опциональную привязку, чтобы развернуть опциональную indexPath, чтобы избежать уродливых скобок, вопросительных и восклицательных знаков.

И никогда не звоните reloadData() после insert/deleteRows/Sections.

func hashtagCellDidTapDelete(_ cell: HashtagCell) {
    if let indexPath = tableView.indexPath(for: cell) {
        hashtagSource.hashtags.remove(at: indexPath.section)
        tableView.deleteSections([indexPath.section], with: .fade)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...