Подтвердить что ты не робот

В 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.

4b9b3361

Ответ 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];