2011-03-16 80 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