Добавить несколько линии в detailTextLabel в UITableViewCell

Я использую UITableView со стилем ячейки UITableViewCellStyleValue1 .

I ' Я хочу иметь несколько строк в detailTextLabel , это возможно? Или я должен сделать собственную ячейку?

14
задан Zorayr 12 July 2015 в 19:05
поделиться

2 ответа

Вы можете установить cell.detailTextLabel.numberOfLines = 2 , чтобы получить там 2 строки. Однако я сомневаюсь, что в этом случае UITableViewCell разместит ярлыки так, как вы ожидаете. Вы можете создать подкласс UITableViewCell и переопределить -layoutSubviews , чтобы расположить метки так, как вы хотите. Вы можете вызвать [super layoutSubviews] , а затем просто настроить положение меток. Возможно, вы захотите использовать - [NSString sizeWithFont: constrainedToSize: lineBreakMode:] для вычисления правильного размера текстовой метки детали.

В качестве альтернативы, вместо создания подкласса от UITableViewCell, вы можете попробовать внести изменения в -tableView: willDisplayCell: forRowAtIndexPath: , хотя, если ячейка когда-либо решит, что ей необходимо изменить макет, ваши настройки будут удалены. . Я рекомендую вам использовать метод подклассов.

Изменить : Кстати, с подходом подкласса все, что вам нужно сделать, это изменить [UITableViewCell alloc] на [MyTableViewCellSubclass alloc] . Поскольку вы не вводите новые методы или свойства, переменная по-прежнему может оставаться типизированной как UITableViewCell, и вам не придется изменять какой-либо другой код.

17
ответ дан 1 December 2019 в 12:51
поделиться

detailTextLabel - это UILabel, правила переноса слов применяются точно так же, как и с ярлыком, который вы создаете.

http://developer.apple.com/iphone/library/documentation/uikit/reference/UILabel_Class/Reference/UILabel.html#//apple_ref/occ/instp/UILabel/lineBreakMode

РЕДАКТИРОВАТЬ: Просто подумал, вам также потребуется изменить высоту ячейки, если текст выходит за пределы некоторого порогового значения строк. возможно 2 или 3 в порядке.

3
ответ дан 1 December 2019 в 12:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: