Как различить представления таблиц, расположенных в 2 разных классах - PullRequest
0 голосов
/ 17 октября 2018

У меня есть контроллер основного представления, содержащий табличное представление, и это табличное представление содержит ячейку, которая содержит другое табличное представление.Я хочу, чтобы контроллер основного представления выступал в качестве делегата и источника данных обоих табличных представлений, за исключением того, как я могу различить два, если один находится в классе ячеек табличного представления.Я попытался провести различие по тегам и именам (что было в других ответах SO), но они не работали, поскольку не все представления таблицы находятся в одном классе контроллера представления.Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Поскольку вы упомянули, что у вас есть UITableView внутри другой ячейки UITableView, я предполагаю, что выход внутреннего tableView принадлежит ячейке внешнего tableView.Следовательно, я считаю, что вы не сможете выполнить прямую проверку эквивалентности.

Могут быть разные подходы для решения этой проблемы.

Одним из быстрых подходов было бы создать 2 подкласса UITableView и использовать по одному для каждого типа tableView (например, OuterTableView и InnerTableView ; или создатьдаже 1 подкласс будет служить цели).

Пример кода:

class OuterTableView: UITableView {
}

class InnerTableView: UITableView {
}

class YourViewController: UIViewController, UITableViewDataSource {

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

        if tableView is OuterTableView {
            // Return the corresponding row count.
            return 2
        } else if tableView is InnerTableView {
            // Return the corresponding row count.
            return 1
        } else {
            return 0
        }
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        //
        //  You may use only one sub-class also for the identification
        //
        if tableView is OuterTableView {
            return UITableViewCell()
        } else {
            return UITableViewCell()
        }
    }
}

Примечание: Не забудьте назначить соответствующие классы вашим элементам UITableViewв Интерфейсном конструкторе.

0 голосов
/ 17 октября 2018

Я думаю, что вы можете проверить с именем табличного представления в rowAtindexPath и номером метода секции cellin.Как и

, если tableView == tableViewOne {вернуть 10}, иначе, если tableView == tableViewTwo {return 20}

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