2011-03-16 149 views
2

我在我的tableview的每个单元格中都有一个自定义的UIbutton。这个UIbutton的功能类似于Gmail中使用的STAR按钮的Add To Favs功能等。意思是每当我点击那个按钮时,适当的项目被添加到favs列表中,并且按钮的图像被改变成发光的星形图像。再次单击时,该项目将从favs列表中删除,并将空白星号用作其图像。当细胞被突出显示时,uibutton图像不会改变

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

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

plz如果可以,请帮助。

+0

您能否为我们提供您的'cellForRow'方法实现。解决问题会更容易。 – RaffAl 2011-03-16 11:45:49

+0

嗨,MJ你投票了吗? – 2011-05-27 13:11:58

回答

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]; 
    } 
} 
+2

gr8解决方案pugal – Radix 2011-03-17 05:52:04