UIButton没有显示图像

时间:2012-03-15 17:31:30

标签: ios uitableview cocoa-touch uibutton uikit

我有一个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的每个属性并更改了它们。我还尝试了UIButtonUIButtonTypeRoundedRectUIButtonTypeAddContact的空UITableViewCell。我现在相信这与UIButtons不喜欢UIButton有关,或者我如何将UITableViewCell添加到{{1}}。

7 个答案:

答案 0 :(得分:7)

确保在复制文件时已将项目检查为目标成员资格。它帮助我解决了这个问题。

答案 1 :(得分:1)

我的错误是将图像拖动到一个images.xcassets文件中,该文件是pod的一部分,而不是主项目。它在故事板中显示得很好,但没有出现在应用程序中。

答案 2 :(得分:1)

万一有人还在寻找答案:将映像保存在asset.xcassets中之后,我需要将其包含在Target的“构建阶段”部分的“复制捆绑包资源”区域中。然后,我还必须设置一个透明的颜色,以免被遮盖。

项目->目标->构建阶段->复制捆绑软件资源->“ +”->“添加其他”->在查找器中选择图像。

答案 3 :(得分:0)

它能肯定找到图像吗?它们是否包含在项目中?

只是为了测试,尝试使用你已经在其他地方使用过的图像而不是Comp-Completed.png - 如果有效,你知道问题在于它找不到该文件。

答案 4 :(得分:0)

检查您的图像是否存在并已导入。此外,它在我看来,除了图像名称,代码是相同的。有点清洁:

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];

答案 5 :(得分:0)

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;
}

答案 6 :(得分:0)

我知道这是一篇旧帖子,但我遇到了同样的问题,原因是isHiddenisUserInteractionEnabled设置为隐藏按钮的值。

将它们设置为YESNO时必须小心。