2012-09-12 240 views
0

我有一個自定義UITableViewCell,它按預期工作。 除了一個(重要的)細節。自定義UITableViewCell中的複選框取消選擇行選擇

我的單元格(從Nib加載)包含UIButton(設置爲自定義)。 該按鈕就像一個複選框。 大多認爲複選框被選中時(=選中) 使用自定義圖片:

[self.checkboxButton setImage:[UIImage imageNamed:@"check_off"] forState:UIControlStateNormal]; 
[self.checkboxButton setImage:[UIImage imageNamed:@"check_on"] forState:UIControlStateSelected]; 

的問題是:
當我選擇我行的複選框(按鈕)將自動取消。 我已經遍佈我的代碼,看看這是從哪裏來的,並且 不會將選定的屬性設置在複選框的任何位置,但在我的自定義tableviewcell代碼中爲 。

有趣的部分是:
當我把我的tableviewcell.selectionstyleUITableViewCellSelectionStyleNone一切正常(沒有自定義backgrond顏色)。 當我切換到UITableViewCellSelectionStyleGray時,該複選框被自動取消選擇。

更新
當我改寫setSelected:animated:我的複選框選中撐。

- (void) setSelected:(BOOL)selected animated:(BOOL)animated 
{ 
    // checkbox stays checked as expected 
    NSLog(@"set select with anim"); 
    // when calling super setSelected:animated: checkbox gets unchecked 
    // [super setSelected:selected animated:animated]; 
} 

有一些機制我失蹤?
例如,我必須覆蓋setSelected:drawRect ...
我已經江郎才盡瞭如何處理這個虛幻的錯誤。

謝謝。

+0

你在選擇單元格時調用了'reloadData'嗎?如果是的話,那可能是你問題的原因。 – janusbalatbat

+0

我在'[[self tableView] reloadData];'中查找並替換了';在我的tableviewcontroller中,現在有一個集中的方法來重新載入tableview的數據。一旦表的數據就位,這個方法就不會再被調用。所以謝謝你的建議,但它似乎不是罪魁禍首。 – Webdevotion

回答

0

看來你取消了複選框tableView:didSelectRowAtIndexPath:方法。

+0

沒有,即使有一個空方法體,問題仍然存在。 的#pragma馬克 - 表視圖代表 - (無效)的tableView:(UITableView的*)的tableView didSelectRowAtIndexPath方法:(NSIndexPath *)indexPath { } – Webdevotion

相關問題