Пользовательская кнопка UITableViewCell, вызывающая неверную цель - PullRequest
0 голосов
/ 30 сентября 2018

У меня странная ситуация, которую я просто не могу исправить.У меня есть tableView с 2 разделами.Оба раздела имеют одинаковую CustomTableViewCell (ShareActivityCustomTableViewCell.swift).

В каждой ячейке есть кнопка UIB (кнопка пользовательского переключателя).

Проблема

Когдапользователь нажимает на кнопку пользовательского переключателя в секции 1, ячейка удаляется из секции 1 и помещается в секцию 0. Эта часть процесса работает нормально.

Однако, как только перезагрузится tableView, и пользовательПри нажатии на тот же пользовательский переключатель в разделе 0 приложение вылетает, потому что индекс выходит за пределы допустимого диапазона.Это было бы вне диапазона, потому что когда пользователь нажимает на пользовательский переключатель, он вызывает неверную цель.Он должен вызвать:

@IBAction func toggleSwitchSection0Tapped(_ sender: UIButton)

Но вместо этого вызывает старую цель:

@IBAction func toggleSwitchTapped(_ sender: UIButton)

Я не могу понять, почему это происходит, так как tableView перезагружается нормально, ячейки меняются местами какожидается (от 1 до 0)

Мой код в cellForRowAtIndex довольно прост, со следующей целью, добавленной в пользовательский переключатель в зависимости от раздела: cellForRowAtIndex в Разделе 0:

cell.toggleSwitch.tag = indexPath.row
        cell.toggleSwitch.addTarget(self, action: #selector(ShareListVC.toggleSwitchSection0Tapped), for: .touchUpInside)

И cellForRowAtIndex в Разделе 1:

cell1.toggleSwitch.addTarget(self, action: #selector(ShareListVC.toggleSwitchTapped), for: .touchUpInside)

Интересно, когда появляется список tableView и в разделе 0 есть ячейки, правильная цель вызывается, когда пользователь нажимает пользовательский переключатель в разделе 0.

Любая помощь или совет будет высоко ценится .... спасибо.

1 Ответ

0 голосов
/ 30 сентября 2018

выяснил решение

Так что после моего первоначального поста и перечитывания я подумал, что наличие одного и того же CustomTableViewCell в каждом разделе может вызывать проблему из-за повторного использования одного и того жеячейка.

Я создал отдельную CustomTableViewCell для секции 0 и секции 1, и теперь все работает, как и ожидалось!

Удивительно, как запись проблемы может заставить вас увидеть вещи по-другому.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...