В UITableView cell.detailTextLabel.text не работает ... почему? - PullRequest
41 голосов
/ 29 января 2011

В tableView:cellForRowAtIndexPath: У меня есть следующее:

cell.textLabel.text = @"label";
cell.detailTextLabel.text = @"detail";

textLabel показывает, как ожидалось, но detailTextLabel не отображается вообще, хотя диагностики нет.Я ожидал, что «подробный» текст появится в ячейке во второй строке, под «обычным» текстом, возможно, с меньшим размером шрифта.

Тот же вопрос задается в другой публикации здесь иПользователь "jbrennan" ответил, что стиль ячейки таблицы должен отличаться от UITableViewCellStylePlain.Однако, кажется, есть только два возможных стиля, UITableViewCellStylePlain и UITableViewCellStyleGrouped.Я получаю тот же результат с любым из них (метка сведений не отображается).

Есть ли другой стиль ячейки, который я не вижу в документации?UITableView изменилось в последнем обновлении и detailTextLabel больше не доступно?Должен ли я сделать что-то дополнительное, чтобы это появилось?Есть предложения?

Я использую xcode 3.2.5 и собираю для iPhone 4.2 Simulator.

Ответы [ 8 ]

115 голосов
/ 29 января 2011

Ваша инициализация должна быть изменена на:

cell = [[[UITableViewCell alloc] <b><em>initWithStyle:UITableViewCellStyleSubtitle</em></b> <br>                               reuseIdentifier:CellIdentifier] autorelease];

Я подчеркнул и выделил ту часть, которую нужно изменить.

14 голосов
/ 29 января 2011

Вам необходимо установить тип ячейки на Subtitle, когда вы его выделите.

if (!cell) {
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:BasicCellIdentifier];
}
12 голосов
/ 27 октября 2011

При использовании Xcode 4.2 установите стиль ячейки табличного представления на Subtitle в раскадровке.dequeueReusableCellWithIdentifier вернет инстанцированную ячейку.

4 голосов
/ 24 сентября 2014

Установить для таблицы View Cell Style значение Subtitle в раскадровке

и напишите этот код для настройки вашей ячейки

if (cell == nil) {
            cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:BasicCellIdentifier] autorelease];
}

enter image description here

3 голосов
/ 12 ноября 2013
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle 
                           reuseIdentifier:CellIdentifier];
1 голос
/ 25 апреля 2018

Для 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
}

Абсолютно нетнеобходимо использовать код для создания экземпляра ячейки, просто используйте его как обычно.

1 голос
/ 17 августа 2017

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
}

enter image description here

Эта часть кода сверху позволяет вам установить ваш detailTextLabel. Вы можете установить все, что вы хотите на раскадровке для стиля ячейки табличного представления (Пользовательский, Основной, Правая деталь, Левая деталь, Субтитр), эта строка будет переопределять его:

style: UITableViewCellStyle.subtitle
0 голосов
/ 12 декабря 2018
  cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier: CellIdentifier];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...