当细胞突出显示时,uibutton图像不会改变

时间:2011-03-16 11:14:43

标签: iphone objective-c uitableview uibutton

我在tableview的每个单元格中都有一个自定义UI按钮。此UI按钮的工作方式类似于Gmail等中使用的STAR按钮的“添加到收藏夹”功能。意味着每当我点击该按钮时,相应的项目就会被添加到favs列表中,并且按钮的图像会变为发光的星形图像。再次单击它时,该项目将从favs列表中删除,并使用空星形作为其图像。

我面临的问题是,当我选择单元格时,它总是显示按钮的空白图像,而不是突出显示的星形图像。

请注意,如果tableview的分隔符样式设置为NONE,则会解决此问题。 但我确实想要分隔符样式。

如果可以,请帮助。

1 个答案:

答案 0 :(得分:2)

使用此代码更改正常和选定状态下的按钮图像。如果要添加收藏夹列表,则需要获取按钮索引值。

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

    customBtn = [UIButton buttonWithType:UIButtonTypeCustom]; 
    customBtn.frame = CGRectMake(292, 8.0, 30, 28); 

    UIImage *likeSelectedImage = [UIImage imageNamed:@"star off.png"];

   [customBtn setBackgroundImage:likeSelectedImage forState:UIControlStateNormal];

    [customBtn addTarget:self action:@selector(addToFavouriteClicked1:) forControlEvents:UIControlEventTouchUpInside]; 
    customBtn.tag = indexPath.row; 
    [cell.contentView addSubview:customBtn];
}


-(void) addToFavouriteClicked1 : (id) sender
{
    UIImage *likeSelectedImg = [UIImage imageNamed:@"star on.png"];

    UIImage *likeImg = [UIImage imageNamed:@"star off.png"];

    if ([sender isSelected]) {
        [sender setImage:likeImg forState:UIControlStateNormal];
        [sender setSelected:NO];
    }else {
        [sender setImage:likeSelectedImg forState:UIControlStateSelected];
        [sender setSelected:YES];
    } 
}