Основная проблема заключается в том, что вы делаете неправильное предположение, что супервизор ячейки - это табличное представление.Никогда не делайте предположений о структуре частного подпредставления классов представлений, предоставленных кем-то, кроме вас.
Вторичная проблема заключается в том, что вы помещаете слишком много логики в класс ячейки.Делегат вашей ячейки должен просто передать себя (ячейку) в качестве единственного параметра в метод делегата.Пусть разработчик делегата получит всю необходимую ему информацию о ячейке.Если делегат хочет знать путь индекса ячейки, тогда делегат может запросить табличное представление.Эта логика не принадлежит ячейке.
Никогда не нужно, чтобы ячейка знала свой собственный путь индекса или в каком табличном представлении она находится. Ячейка должна заботиться только о своих собственных представлениях и ничего больше.
Обновите метод протокола, чтобы использовать ячейку в качестве параметра.
Обновите обработчик кнопок вашей ячейки, чтобы просто передать себя в качестве параметра методу делегата.
Обновите метод делегата вКонтроллер вида принимает ячейку в качестве аргумента и получает все, что ему нужно, основываясь на этой ячейке.
Это делает реализацию класса вашей ячейки намного проще и помещает логику, где он принадлежит, - в контроллер представления.