为什么这个UIButton图像不会显示在自定义UITableViewCell中?

时间:2015-03-03 18:51:39

标签: ios objective-c uitableview uibutton

我试图添加一个"收藏按钮"到UIableView中的自定义单元格。

单元格有一个标签和detailLabel显示正常。我一定做错了什么,但我无法弄清楚它是什么。我的代码如下,我在研究this question之后改变了我的原始方法(评论)。

我的代码如下:

- (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"CustomCell";

    CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
        if (cell == nil)
        {
            NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"MyCustomCell" owner:self options:nil];
            cell = [nib objectAtIndex:0];
        }
    }
    cell.nameLabel.text = [myMutableArray valueForKey:@"Name"];
    cell.detailLabel.text = [myMutableArray valueForKey:@"Detail"];

    if (isFavorite)
    {
    NSLog(@"fave");
        UIImage *btnImage = [UIImage imageNamed:@"goldStar.png"];
        [cell.favoriteButton setImage:btnImage forState:UIControlStateNormal];

        //[cell.favoriteButton setImage:[UIImage imageNamed:@"yellowStar.png"] forState:UIControlStateNormal];

    } else {
        NSLog(@"out of fave");
        UIImage *btnImage = [UIImage imageNamed:@"greyStar.png"];
        [cell.favoriteButton setImage:btnImage forState:UIControlStateNormal];

        //[cell.favoriteButton setImage:[UIImage imageNamed:@"greyStar.png"] forState:UIControlStateNormal];
    }

    return cell;
}

MyCustomCell.h

@interface MyCustomCell : UITableViewCell

@property (nonatomic, weak) IBOutlet UILabel *nameLabel;
@property (nonatomic, weak) IBOutlet UILabel *detailLabel;
@property (nonatomic, strong) IBOutlet UIButton *favoriteButton;

MyCustomCell.m

@implementation MyCustomCell

@synthesize nameLabel = _nameLabel;
@synthesize detailLabel = _detailLabel;
@synthesize favoriteButton = _favoriteButton;

- (void)awakeFromNib {
    _favoriteButton = [[DBTileButton alloc] init];
}

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
    [super setSelected:selected animated:animated];


}

我已经检查过,按钮在IB中连接好了。提前感谢任何建议。

更新我在日志消息中注意到图像帧设置为0,0,0,0。我附加了自定义单元格IB设置的镜头。那里有什么不对劲吗? enter image description here

1 个答案:

答案 0 :(得分:1)

据我所知,任何UIView子类的IBOutlet都不应该强大!无论如何,如果您想以编程方式初始化按钮,则无需使用IBOutlet:首先,您忘记设置按钮的框架并通过addSubview将其添加到单元格视图中。但这更简单:只需在故事板上添加按钮,设置自定义类并删除它:

_favoriteButton = [[DBTileButton alloc] init];

编辑为故事板的按钮设置类,如图片

enter image description here

然后改变你的出口:

@property (nonatomic, weak) IBOutlet DBTileButton *favoriteButton;

最后不要忘记将插座连接到按钮并删除以编程方式初始化。