Установить пользовательский стиль ячейки с правильной детализацией, но она не показывает detailTextLabel?

Я использую Xcode7.2.1 iOS9.2 SDK.

установить пользовательский стиль ячейки с правой детали

  1. Зарегистрировать ячейку:

Код:

self.TbuserList.registerNib(UINib.init(nibName: "UserCell", bundle: NSBundle.mainBundle()), forCellReuseIdentifier: "idUserList")
  1. установить текст ячейки detailTextLabel:

Код:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("idUserList",forIndexPath: indexPath ) as! UserCell
    //print(self.users)
    cell.textLabel?.text = self.users[indexPath.row]["nickname"] as? String
    cell.detailTextLabel?.text = (users[indexPath.row]["isConnected"] as! Bool) ? "Online" : "Offline"
    cell.detailTextLabel?.textColor = (users[indexPath.row]["isConnected"] as! Bool) ? UIColor.greenColor() : UIColor.redColor()
    return cell
}

введите описание изображения здесь

Примечание. Когда я изменяю стиль ячейки с "Правая деталь" на "Субтитры" или "Левая деталь", это нормально.

1 ответ

Поскольку вы используете пользовательскую ячейку, созданную из файла xib, я бы посоветовал не пытаться использовать элементы ячейки по умолчанию (textLabel и detailTextLabel), а вместо этого просто добавить представления, необходимые для создания нужной ячейки. Вы можете добавить дополнительные представления к стандартным ячейкам, но может быть немного сложнее убедиться, что ваши представления работают с существующими стандартными представлениями ячеек. Если стандартный тип ячейки соответствует вашим потребностям, вы можете зарегистрировать класс UITableViewCell в tableView вместо пользовательского файла XIB. Взгляните на раздел "Настройка ячеек" в документации Apple.

Я не использую раскадровку, поэтому я не уверен, что это поможет вам, но я в своей пользовательской ячейке вот что:

class CustomTableViewCell: UITableViewCell {

    override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
        //MARK: Setting ".value1" in super.init(style: .value1, ...) is the key to do this
        super.init(style: .value1, reuseIdentifier: reuseIdentifier)

        textLabel?.text = "Main Label"

        detailTextLabel?.text = "Detail Label"
    }

    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}

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

Другие вопросы по тегам