Загрузка табличного представления с данными с 2 различными ячейками прототипа - PullRequest
0 голосов
/ 30 мая 2019

Я пытаюсь заполнить tableView различными ячейками прототипа в разное время.Проблема в том, что любой код после let cell = tableView.dequeueReusableCell(withIdentifier: "MeArticlesCell") as? MeArticlesCell else {return UITableViewCell()} не вызывается, и я не могу понять, почему.Я возвращаю правильное количество строк.

 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    if(postsSelected){
        guard let cell = tableView.dequeueReusableCell(withIdentifier: "messageCell") as? feedMessagesCell else {return UITableViewCell()}
        //the code in this part loads posts fine

    } else {
        guard let cell = tableView.dequeueReusableCell(withIdentifier: "messageCell") as? feedMessagesCell else {return UITableViewCell()}
        //this part never gets called 
    }
}        

Ответы [ 2 ]

0 голосов
/ 30 мая 2019

Вы используете dequeueReusableCell(withIdentifier:) метод для инициализации ячейки, которая возвращает nil, если она не находит повторно используемую ячейку. Подробнее здесь

Объект UITableViewCell со связанным идентификатором или ноль, если нет такой объект существует в очереди для повторного использования.

Вы должны использовать dequeueReusableCell(withIdentifier:for:), который инициирует новую ячейку, если она не находит ячейку для повторного использования. Подробнее здесь

Объект UITableViewCell со связанным идентификатором повторного использования. это Метод всегда возвращает действительную ячейку.

0 голосов
/ 30 мая 2019

В основном ваш оператор guard не выполняется и входит в часть else.

    guard let cell = tableView.dequeueReusableCell(withIdentifier: "messageCell") as? feedMessagesCell else { // this fails 
       // enters here
       return UITableViewCell()
       // exist the function - nothing will be run after
    }

Полагаю, что разыграть вы не можете feedMessagesCell, поэтому tableView.dequeueReusableCell(withIdentifier: "messageCell") as? feedMessagesCell делает cell нулем (а затем введите else часть)

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