В UITableView, cell.detailTextLabel.text не работает... почему?
В tableView:cellForRowAtIndexPath:
у меня есть следующее:
cell.textLabel.text = @"label";
cell.detailTextLabel.text = @"detail";
textLabel
показывает, как ожидалось, но detailTextLabel
вообще не появляется, хотя диагностика отсутствует. Я ожидал, что текст "подробно" появится в ячейке на второй строке под "нормальным" текстом, возможно, с меньшим размером шрифта.
Тот же вопрос задается в другом сообщении здесь, и пользователь "jbrennan" ответил, что стиль ячейки tableview должен быть чем-то иным, чем UITableViewCellStylePlain
. Однако, кажется, существует только два возможных стиля: UITableViewCellStylePlain
и UITableViewCellStyleGrouped
. Я получаю тот же результат и с (метка детали не появляется).
Есть ли другой тип ячейки, который я не вижу в документации? Изменено ли UITableView
в последнем обновлении, а detailTextLabel
больше не доступно? Должен ли я сделать что-то дополнительное, чтобы оно появилось? Любые предложения?
Я использую xcode 3.2.5 и создаю для iPhone 4.2 Simulator.
Ответы
Ответ 1
Инициализация должна быть изменена следующим образом:
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle
reuseIdentifier:CellIdentifier] autorelease];
Я подчеркнул и выделил часть, которую вам нужно изменить.
Ответ 2
Вам нужно установить тип ячейки Subtitle, когда вы ее выделите.
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:BasicCellIdentifier];
}
Ответ 3
При использовании Xcode 4.2 установите стиль "Вид таблицы" в Subtitle в Storyboard. dequeueReusableCellWithIdentifier
возвращает экземплярную ячейку.
Ответ 4
Установить таблицу Просмотр стиля ячейки для субтитров в раскадровке
и напишите этот код, чтобы настроить ячейку
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:BasicCellIdentifier] autorelease];
}
![enter image description here]()
Ответ 5
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle
reuseIdentifier:CellIdentifier];
Ответ 6
Swift 3:
Если вы создаете свою ячейку с переопределением функции cellForRowAt indexPath:
let tableContent = ["1", "2", "3", "4", "5"]
let tableDetailContent = ["a", "b", "c", "d", ""]
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: UITableViewCellStyle.subtitle, reuseIdentifier: "yourCellIdentifier")
cell.textLabel?.text = tableContent[indexPath.row]
cell.detailTextLabel?.text = tableDetailContent[indexPath.row]
return cell
}
![введите описание изображения здесь]()
Эта часть кода сверху позволяет вам установить ваш detailTextLabel.. Вы можете установить все, что хотите, в раскадровке для стиля Table View Cell (Custom, Basic, Right Detail, Left Detail, Subtitle), эта строка переопределит его:
style: UITableViewCellStyle.subtitle
Ответ 7
Для Swift 4, хотя техника будет той же самой версии (или Obj-C) -
Я знаю, что немного поздно для вечеринки, но многие ответы делают это намного сложнее, чем нужно.
Предполагая, что вы используете раскадровку, все, что вам нужно сделать, это установить стиль ячейки табличного представления в раскадровке на "Субтитры", а затем просто -
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "myIdentifier", for: indexPath)
cell.textLabel?.text = "Title"
cell.detailTextLabel?.text = "Subtitle..."
return cell
}
Нет абсолютно никакой необходимости использовать код для создания экземпляра ячейки, просто используйте его как обычно.
Ответ 8
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier: CellIdentifier];