Это на iPhone 0S 2.0. Ответы на 2.1 тоже хороши, хотя я не знаю каких-либо различий в отношении таблиц.
Похоже, что можно обернуть текст без создания пользовательской ячейки, поскольку по умолчанию a UITableViewCell
содержит a UILabel
. Я знаю, что могу заставить это работать, если я создаю собственную ячейку, но это не то, чего я пытаюсь достичь - я хочу понять, почему мой нынешний подход не работает.
Я выяснил, что метка создается по требованию (поскольку ячейка поддерживает доступ к тексту и изображению, поэтому она не создает представление данных до тех пор, пока это не потребуется), поэтому, если я сделаю что-то вроде этого:
cell.text = @""; // create the label
UILabel* label = (UILabel*)[[cell.contentView subviews] objectAtIndex:0];
затем я получаю правильную метку, но установка numberOfLines
на нее (и lineBreakMode) не работает - я все еще получаю однострочный текст. Для UILabel
отображения текста достаточно высоты - я просто возвращаю большое значение высоты в heightForRowAtIndexPath
.
источник
Обновленный ответ Тима Рупа для iOS7:
источник
Краткий комментарий / ответ, чтобы записать мой опыт, когда у меня была такая же проблема. Несмотря на использование примеров кода, высота ячейки табличного представления корректировалась, но метка внутри ячейки все еще не корректировалась корректно - решение состояло в том, что я загружал свою ячейку из пользовательского файла NIB, что происходит после того, как высота ячейки отрегулирована.
И у меня были мои настройки внутри файла NIB, чтобы не переносить текст, и у меня была только 1 строка для метки; настройки файла NIB переопределяли настройки, которые я настраивал внутри кода.
Урок, который я взял, состоял в том, чтобы всегда иметь в виду, каково состояние объектов в каждый момент времени - они, возможно, еще не были созданы! ... кто-то вниз по линии.
источник
Если мы хотим добавить только текст в
UITableView
ячейку, нам нужно работать только с двумя делегатами (не нужно добавлять дополнительныеUILabels
)1)
cellForRowAtIndexPath
2)
heightForRowAtIndexPath
Это решение сработало для меня:
Здесь строка
mutArr
является изменяемым массивом, из которого я получаю свои данные.РЕДАКТИРОВАТЬ: - Вот массив, который я взял.
источник
Теперь у таблиц могут быть ячейки с самоконтролем. Настройте вид таблицы следующим образом
tableView.estimatedRowHeight = 85.0 //use an appropriate estimate tableView.rowHeight = UITableViewAutomaticDimension
Справочник Apple
источник
Я использую следующие решения.
Данные предоставляются отдельно в члене:
Обработка может быть легко сделано в
cellForRowAtIndexPath
. Определите ячейку / определите шрифт и присвойте эти значения результирующей «ячейке». Обратите внимание, что дляnumberoflines
него задано значение «0», что означает «взять то, что нужно».В
heightForRowAtIndexPath
, я рассчитываю высоту обернутого текста. Размер кодирования должен быть связан с шириной вашей ячейки. Для iPad это должно быть 1024. Для iPhone и iPod 320.источник
Я нашел это довольно простым и понятным:
например:
Это может или не может быть лучшим / стандартным подходом для этого, но в моем случае это сработало.
источник
Попробуйте мой код в Swift. Этот код будет работать и для обычных UILabels.
Теперь звоните просто так
источник
Я думаю, что это лучшее и более короткое решение. Просто отформатируйте
UILabel
(textLabel
) ячейки, чтобы автоматически рассчитать высоту, указав,sizeToFit
и все должно быть хорошо.источник
Я не думаю, что вы можете манипулировать
UITableViewCell's
частным лицом,UILabel
чтобы сделать это. Вы можете добавить новыйUILabel
к клетке себя и использоватьnumberOfLines
сsizeToFit
размером его соответствующим образом . Что-то вроде:источник