2013-10-26 90 views
0

我已經子類化了一個UITableViewCell,這樣我就可以增加滾動性能,這對我來說已經非常有用。Subclassed UItableViewCell選擇

在我的子類,我有一個名爲seSelected方法,看起來像這樣

- (void)setSelected:(BOOL)selected animated:(BOOL)animated 
{ 
    [super setSelected:selected animated:animated]; 

    // Configure the view for the selected state 
    if (selected) { 
     self.backgroundColor = [UIColor lightGrayColor]; 
    }else{ 
     self.backgroundColor = [UIColor whiteColor]; 
    } 
} 

我想知道如何讓這個如果我觸摸同一小區將取消選擇單元格,並改變顏色重新白色?我已經嘗試了一些不同的如果在setSelected但nothings工作的說法。

任何幫助,將不勝感激。

回答

0

使用該委託的方法

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 

,並呼籲在這裏它們管理選擇的方法和未選中單元格。

0

一種方法可以是在單元上設置標籤,然後用它來設置背景顏色。

typedef enum { 
    CellSelected = 0, 
    CellDeselected 
} CellSelection; 

在創建單元設置標記爲「CellDeselected」

cell.tag = CellDeselected; 

然後當細胞被竊聽只是檢查要在背景設置的顏色。

switch (customCell.tag) { 
    case CellSelected: 
     self.backgroundColor = [UIColor lightGrayColor]; 
     break; 
    case CellDeselected: 
     self.backgroundColor = [UIColor whiteColor]; 
     break; 
    default: 
     break; 
} 

customCell.tag = !customCell.tag; 
0

做這樣的...

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    str = [YourArray objectAtIndex:indexPath.row];//str is a string variable 
} 

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

    NSString *cellIndentifier = @"cell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIndentifier]; 
    if (cell == nil) { 
     cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:cellIndentifier]; 
    } 
    cell.textLabel.text = [reminder objectAtIndex:indexPath.row]; 

    cell.backgroundColor = [UIColor whiteColor]; 

    if ([str isEqualToString:[reminder objectAtIndex:indexPath.row]]) 
    { 
     cell.backgroundColor = [UIColor grayColor]; 
    } 

    return cell; 
} 

您可以使用此爲您的自定義單元格.....

0

使用的UITableViewCell方法:[cell setSelectedBackgroundView:myBgColorView];Apple Documentation。 例子:

UIView *myBgColorView = [[UIView alloc] init]; 
myBgColorView.backgroundColor = [UIColor greenColor]; 
[cell setSelectedBackgroundView:myBgColorView]; 
0

設置單元格樣式:

cell.selectionStyle = UITableViewCellSelectionStyleNone; 

,你的代碼將工作。但是,您只設置顏色選定的單元格。 如果您在按下單元格時需要設置顏色,請覆蓋此方法:

- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated