我试图添加一个"收藏按钮"到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设置的镜头。那里有什么不对劲吗?
答案 0 :(得分:1)
据我所知,任何UIView子类的IBOutlet都不应该强大!无论如何,如果您想以编程方式初始化按钮,则无需使用IBOutlet:首先,您忘记设置按钮的框架并通过addSubview
将其添加到单元格视图中。但这更简单:只需在故事板上添加按钮,设置自定义类并删除它:
_favoriteButton = [[DBTileButton alloc] init];
编辑为故事板的按钮设置类,如图片
然后改变你的出口:
@property (nonatomic, weak) IBOutlet DBTileButton *favoriteButton;
最后不要忘记将插座连接到按钮并删除以编程方式初始化。