Не удалось загрузить пользовательскую ячейку из очереди многократного использования UITableViewCell - PullRequest
0 голосов
/ 23 марта 2019

Я использую файл xib для создания пользовательской ячейки. Идентификатор повторного использования устанавливается в xib-файле. Тогда у меня есть ленивый var, который я использую для регистрации пера только один раз:

private lazy var registerNib: Bool = {
    let nib = UINib(nibName: "CustomTableViewCell", bundle: nil)
    self.tableView.register(nib, forCellReuseIdentifier: "Custom")

    return true
}()

Во время создания ячеек я просто использовал ленивую переменную var и вычеркнул ячейку из табличного представления, используя тот же идентификатор повторного использования, что и в xib-файле:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let _ = self.registerNib
    let cell = tableView.dequeueReusableCell(withIdentifier: "Custom") as! CustomCell

    return cell
}

Но развертывание не удается, и приложение вылетает.

tableView.dequeueReusableCell возвращает nil

по какой-то причине ....

Ответы [ 2 ]

1 голос
/ 23 марта 2019

Существует два метода с именем dequeueReusableCell.

Но развертывание не удается, и приложение вылетает.tableView.dequeueReusableCell по какой-то причине возвращает nil ....

Вы используете первый, и в документе четко указано:

Возвращаемое значение

A UITableViewCell объект со связанным identifier или nil, если в очереди многократно используемых ячеек такого объекта не существует.


Возможно, вы захотите использоватьпоследний.Измените строку:

let cell = tableView.dequeueReusableCell(withIdentifier: "Custom") as! CustomCell

На:

let cell = tableView.dequeueReusableCell(withIdentifier: "Custom", for: indexPath) as! CustomCell
0 голосов
/ 23 марта 2019

Вам необходимо зарегистрировать свой объект пера в viewDidLoad(): методе, подобном этому

let nib = UINib(nibName: "CustomTableViewCell", bundle: nil)

tableView.register(nib, forCellReuseIdentifier: "Custom")

Кроме того, вы установили идентификатор повторного использования ячеек в раскадровке?

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