Установить пользовательский стиль ячейки с правильной детализацией, но она не показывает detailTextLabel?
Я использую Xcode7.2.1 iOS9.2 SDK.
установить пользовательский стиль ячейки с правой детали
- Зарегистрировать ячейку:
Код:
self.TbuserList.registerNib(UINib.init(nibName: "UserCell", bundle: NSBundle.mainBundle()), forCellReuseIdentifier: "idUserList")
- установить текст ячейки 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 и регистрируете те же имена для своей пользовательской ячейки, он должен работать.