iOS: ячейки UITableView с несколькими строками? - PullRequest
41 голосов
/ 11 мая 2011

Какой лучший способ иметь ячейки UITableView с несколькими строками? Допустим, 5 .. или 6?

Вместо textLabel и la detailTextLabel? Должен ли я создать собственный стиль? или пользовательский вид?

Любой учебник / пример хорошо принят.

спасибо

Ответы [ 5 ]

119 голосов
/ 11 мая 2011

Для этого вы можете использовать существующие представления UILabel в UITableViewCell.Секрет заключается в следующем:

cell.textLabel.numberOfLines = 0;
cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;

По умолчанию UILabel допускает только 1 строку текста.Установка для numberOfLines значения 0 в основном снимает любые ограничения на количество отображаемых строк.Это позволяет вам иметь несколько строк текста.

Установка для lineBreakMode значения Word Wrap позволяет переносить длинные строки текста на следующую строку в метке.Если вы не хотите этого, вы можете пропустить эту строку.

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

Для iOS 6.0 и более поздних версий используйте NSLineBreakByWordWrapping вместо UILineBreakModeWordWrap, что устарело.

25 голосов
/ 21 июня 2015

С Swift 3:

func allowMultipleLines(tableViewCell: UITableViewCell) {
    tableViewCell.textLabel?.numberOfLines = 0
    tableViewCell.textLabel?.lineBreakMode = .byWordWrapping
}
0 голосов
/ 14 января 2018
cell.textLabel.numberOfLines = 0;

вместе с

tableView.rowHeight = UITableViewAutomaticDimension

Работает , но только , если количество строк ограничено (2-3 строки).

То, что я также должен был сделать, это встроить поля ячеек в StackView. Это имело все значение. Теперь я могу отображать столько строк, сколько захочу.

0 голосов
/ 17 сентября 2016

Я обнаружил, что это работает для меня на Xcode версии 8.0 (8A218a)

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath)    UITableViewCell {
        let cell = UITableViewCell()
       //MARK: word wrapping in cell
        cell.textLabel?.text = self.choices[(indexPath as NSIndexPath).row]
        cell.textLabel?.numberOfLines=0 // line wrap
        cell.textLabel?.lineBreakMode = NSLineBreakMode.byWordWrapping

        return cell
    }
0 голосов
/ 26 августа 2016

Есть способ сделать это, просто используя раскадровку. Сначала выберите ячейку и перейдите в раздел атрибутов на правой панели. Первый вариант должен быть «Стиль». Измените это с обычного на основное. Теперь в вашей клетке вы должны увидеть текст с надписью «Название». Дважды щелкните по нему, и на правой панели вы сможете установить количество строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...