При вычислении высоты UITableViewCell было бы полезно, если бы я мог указать, что style установлено в UITableViewCell. Я не вижу никаких свойств в самой ячейке. Это возможно?Могу ли я программно проверить, какой стиль UITableViewCell?
ответ
Нет, Apple не предоставляет свойство стиля для UITableViewCell. Но у вас есть пара вариантов.
Создайте свой собственный подкласс
UITableViewCell
, который сохраняет стиль в собственности, когда initWithStyle называется.@property UITableViewCellStyle cellStyle; // ... - (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; if (self) { self.cellStyle = style; } return self; }
Сохраните стиль вручную для метки ячейки. Затем вы можете проверить тег на ячейке, когда вы устанавливаете высоту ячейки. Например:
UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:nil]; cell.tag = UITableViewCellStyleValue1;
Да, вы можете. Вы можете получить доступ к методу style
в вашем представлении таблицы, чтобы вернуть текущий стиль. Here is a link to apple's documentation.
Edit:
Упс Я просто заметил, что вы спрашивали о UITableViewCell. В идеале вам не нужно знать стиль ячейки, потому что вы не можете изменить стиль существующей ячейки. Вы можете только инициализировать ячейку со стилем, как это:
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:Cellidentifier];
Чейз, я ищу стиль ячейки, а не таблицу. Я добавлю больше информации на мой вопрос, чтобы сделать это более ясным. –
Я обновил свой ответ. См. Мое редактирование. – Chase
Хм. Это то, чего я боялся, но что, если я хочу реализовать heightForRowAtIndexPath, и я хочу сделать что-то другое в зависимости от типа ячейки? –
не непосредственно, или по крайней мере не 100% надежно ...
Когда вы [cell initWithStyle:style reuseIdentifier:foo]
выбранный стиль просто используется для (пере) макет содержимого ячейки , в частности макет textLabel vs detailTextLabel. После этого стиль больше не имеет значения ... Но то, что вы может do, в конце концов, посмотрим на результирующий макет, а именно на рамки textLabel vs detailTextLabel, и выведите из их позиции & размер, который, по-видимому, был выбран изначально выбранного стиля [я говорю: вероятно, потому что, если textLabel или detailTextLabel ничтожны, нет никакого способа, например, отличить UITableViewCellStyleDefault от UITableViewCellStyleValue1 от UITableViewCellStyleSubtitle, потому что у вас просто есть textLabel, и все они выглядят одинаково].
Это говорит, что-то вроде этого может быть достаточно для ваших нужд (после того, как [cell layoutSubviews]
то есть):
if (!CGRectGetHeight(cell.detailTextLabel.frame) {
// UITableViewCellStyleDefault, b/c it never shows a detailTextLabel
} elseif (CGRectGetMinY(cell.detailTextLabel.frame) == CGRectGetMinY(cell.textLabel.frame)) {
// UITableViewCellStyleValue1 or UITableViewCellStyleValue2
} else {
// UITableViewCellStyleSubtitle
}
Опять же, YMMV ... это предполагает, что ваш TextLabel и detailTextLabel являются как не-ноль.
BTW Вы могли бы еще отличить UITableViewCellStyleValue1 от UITableViewCellStyleValue2, глядя на TextAlignment наклеек, но на самом деле нет способа узнать, что они не были повторно выровнены программно-то после того, как клетка была initWithStyle'd.
Сказав все это, если вы хотите на 100% надежно проверить, в каком стиле был настроен ваш UITableViewCell, тогда ваша самая безопасная ставка - сделать простой подкласс, который переопределяет -initWithStyle:reuseIdentifier:
и сохраняет это в новое имущество; т.е. вариант 1 принятого ответа.
По какой-то странной причине Apple, не включает в себя недвижимость в их общественном заголовке, однако, вы можете просто позвонить valueForKey получить:
UITableViewCellStyle style = [tableCell valueForKey:@"tableViewStyle"];
При использовании valueForKey касается вас, и вы используете раскадровки вместо этого вы могли бы подкласс и переопределение:
- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder{
self = [super initWithCoder:aDecoder];
if (self) {
_cellStyle = [aDecoder decodeIntForKey:@"UITableViewCellStyle"];
}
return self;
}
Другие ответы показывают, как получить его для программно созданных ячеек.
- 1. Установить стиль UITableViewCell программно в Xamarin iOS
- 2. Могу ли я проверить, какой версией нужен мой PS Script?
- 3. Как я могу программно проверить, установлен ли Visio и где?
- 4. Могу ли я редактировать стиль динамически?
- 5. Стиль UITableViewCell
- 6. Как я могу программно проверить, использует ли сайт HTTPS?
- 7. UITableViewCell набор стилей программно
- 8. Могу ли я проверить, какой сайт window.history.back() приведет пользователя?
- 9. Могу ли я предоставить пространство между UITableViewCell
- 10. Управление Стиль UITableViewCell
- 11. Как я могу программно поставить uicollectionview в расширяющемся uitableviewcell
- 12. UITableViewCell стиль и dequeueReusableCellWithIdentifier
- 13. Где я могу добавить CALayers в UITableViewCell?
- 14. Какой самый эффективный способ программно проверить, изменился ли год?
- 15. Могу ли я добавить стиль css •?
- 16. UIAppearance не стиль UITableViewCell
- 17. Изменить стиль UITableViewCell
- 18. Как я могу получить, какой запуск приложения пользователем программно?
- 19. Могу ли я проверить, пристыкован ли iPhone?
- 20. Могу ли я проверить, поддерживает ли QuickLook/открывает данный файл?
- 21. Как назначить стиль программно
- 22. Могу ли я программно расширить меню «Файл»?
- 23. Могу ли я создать MOTION_EVENT программно?
- 24. Могу ли я прокручивать WKInterfaceGroup программно?
- 25. Могу ли я создать UIContainerView программно?
- 26. Facebook: Могу ли я программно добавить друга?
- 27. Могу ли я добавить iPad popover программно?
- 28. Могу ли я изменить значок приложения программно
- 29. Могу ли я включить/отключить ContentProvider программно?
- 30. Могу ли я открыть программу NSMenu программно?
+1. Первый вариант - это то, что я сделал бы. Подклассификация не только позволяет вам сохранять и получать доступ к информации в вопросе, поэтому очень удобно сохранять и получать доступ к чему-либо еще, что вам нужно связать с каждой ячейкой. – Nerrolken