#cocoa-touch #uitableview #uibutton
#cocoa-touch #uitableview #uibutton
Вопрос:
Я пытаюсь создать UITableViewCell, которая содержит одну большую кнопку.
Я попробовал то, что казалось очевидным, добавив UIButton в contentView ячейки, но это не сработало (ячейка отображается пустой). В чем я не прав?
UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"startButtonCell"];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:@"startButtonCell"] autorelease];
UIButton *btn = [[UIButton alloc] initWithFrame:cell.contentView.bounds];
[cell.contentView addSubview:btn];
if (!self.task.isCompleted) {
btn.titleLabel.text = @"Start!";
}else{
btn.titleLabel.text = @"Continue!";
}
[btn release];
}
Комментарии:
1. Я предполагаю, что это ваша
-cellForRowAtIndexPath:
реализация… Вы уверены, что ваш код выполняется в прошломif (cell == nil) {
? И правильно ли создана кнопка в отношении ее размера? не могли бы вы предоставить полный-cellForRowAtIndexPath:
?
Ответ №1:
Попробуйте следующее:
UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[btn setFrame:cell.contentView.frame];
[btn setTitle:@"Button Title" forState:UIControlStateNormal];
[cell.contentView addSubview:btn];
Я далеко не эксперт, но я думаю, что проблема с вашим решением заключается в том, что по умолчанию стиль кнопки UIButton — UIButtonTypeCustom , который невидим, потому что он еще не настроен. Если я изменю приведенный выше код с
UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
Для
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
Я получаю тот же результат, что и вы. Кнопка не видна. Если вы хотите использовать UIButtonTypeCustom, вам придется выполнить некоторые настройки. Например, добавление фонового изображения к вашей кнопке.