UIButton не показывает изображение - PullRequest
1 голос
/ 15 марта 2012

У меня есть UITableViewCell, к которому я добавляю пять UIButtons.Я программно создаю кнопки, добавляю действие и изображение.Кнопки расположены в правильном месте, действие работает, и тег установлен, но они понятны.Изображения не показывают.

Это то, что я использую, чтобы создать одну из кнопок и добавить их в ячейку, этот код находится в tableView:cellForRowAtIndexPath::

if ([[self.compCompletion objectForKey:@"Key" isEqualToString:@"YES"]) {
            UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
            button.frame = CGRectMake(11, 6, 21, 21);
            button.tag = 1;
            [button addTarget:self action:@selector(changeCompStatus:) forControlEvents:UIControlEventTouchUpInside];
            [button setImage:[UIImage imageNamed:@"Comp-Completed.png"] forState:UIControlStateNormal];
            [button setContentMode:UIViewContentModeScaleToFill];
            [cell.contentView addSubview:button];
        }
        else {
            UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
            button.frame = CGRectMake(11, 6, 21, 21);
            button.tag = 1;
            [button addTarget:self action:@selector(changeCompStatus:) forControlEvents:UIControlEventTouchUpInside];
            [button setImage:[UIImage imageNamed:@"Comp-Uncompleted.png"] forState:UIControlStateNormal];
            [button setContentMode:UIViewContentModeScaleToFill];
            [cell.contentView addSubview:button];
        }

Я пытался добавить:[button setEnabled:YES];, [button setHidden:NO]; и [button setNeedsDislpay]; к процессу без удачи.Как получить кнопку для отображения изображения?

РЕДАКТИРОВАТЬ: Мое изображение существует, UIImage создано, и я могу вытащить UIImage из UIButton исохранить его в файл.Я просмотрел каждое свойство UIButton, которое контролирует внешний вид, и изменил их.Я также пробовал пустые UIButton типа UIButtonTypeRoundedRect и UIButtonTypeAddContact.Теперь я считаю, что это как-то связано с UITableViewCell, который не нравится UIButtons, или с тем, как я добавляю UIButton к UITableViewCell.

Ответы [ 6 ]

7 голосов
/ 04 декабря 2012

Убедитесь, что вы отметили свой проект как Целевое Членство при копировании файлов. Это помогло мне решить проблему.

1 голос
/ 01 декабря 2016

Моя ошибка заключалась в перетаскивании изображений в файл images.xcassets, который был частью пакета, а НЕ основным проектом.В раскадровке он хорошо показывался, но не появлялся в приложении.

0 голосов
/ 19 апреля 2016

Я знаю, что это старый пост, но я столкнулся с той же проблемой, и это было связано с тем, что isHidden и isUserInteractionEnabled установлены в значения, чтобы скрыть кнопку.

Вы должны быть осторожны, когда установите их на YES или NO.

0 голосов
/ 16 марта 2012
UIImage * normalImage = [UIImage imageNamed:@"Comp-Uncompleted.png"];
UIImage * selectedImage = [UIImage imageNamed:@"Comp-Completed.png"];

UIButton *button = [[UIButton buttonWithType:UIButtonTypeCustom] retain];
button.frame = CGRectMake(11, 6, 21, 21);
button.tag = 1;
[button addTarget:self action:@selector(changeCompStatus:) forControlEvents:UIControlEventTouchUpInside];
[button setImage:normalImage forState:UIControlStateNormal];
[button setImage:selectedImage forState:UIControlStateSelected];
[cell.contentView addSubview:button];

if ([[self.compCompletion objectForKey:@"Key" isEqualToString:@"YES"]) {
    button.selected = YES;
} else {
    button.selected = NO;
}
0 голосов
/ 15 марта 2012

Проверьте, существуют ли ваши изображения и импортируются ли.Также мне кажется, что помимо имени изображения код идентичен.Немного чище, как:

UIImage *buttonImage;
if ([[self.compCompletion objectForKey:@"Key" isEqualToString:@"YES"]) {
    buttonImage = [UIImage imageNamed:@"Comp-Completed.png"];
} else {
    buttonImage = [UIImage imageNamed:@"Comp-Uncompleted.png"];
}

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(11, 6, 21, 21);
button.tag = 1;
[button addTarget:self action:@selector(changeCompStatus:) forControlEvents:UIControlEventTouchUpInside];
[button setImage:buttonImage] forState:UIControlStateNormal];
[button setContentMode:UIViewContentModeScaleToFill];
[cell.contentView addSubview:button];
0 голосов
/ 15 марта 2012

Можно ли определенно найти изображения?Они включены в проект?

Просто для тестирования попробуйте использовать изображение, которое вы уже использовали где-то еще, вместо Comp-Completed.png - если это работает, вы знаете, что проблема в том, что оннайдите этот файл.

...