2011-08-08 53 views
4

我怎樣才能適應這個能夠做出多種選擇?並獲得選擇的iPhone:如何允許在tabelview中自定義單元格的多個選擇?

- (id)initWithCellIdentifier:(NSString *)cellID { 
if ((self = [super initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellID])) { 

    UITableViewCell *cell=self; 
      UIImage *cry = [UIImage APP_CRYSTAL_SELECT]; 
    self.leftImage = [[[UIImageView alloc] initWithImage:cry] autorelease] ; 
      [self.contentView addSubview:leftImage];    
} 

和選擇的方法是:

- (void)setSelected:(BOOL)selected animated:(BOOL)animated { 
    [super setSelected:selected animated:animated]; 
     if(selected) 
     { 
     NSArray *subviews=[self.contentView subviews]; 
     for(UIView* view in subviews){ 
      if([view isEqual:self.leftImage]){ 
      [self.leftImage setHighlightedImage:[UIImage APP_CRYSTAL_SELECTED]]; 
     } 
    } 
} 
else 
{  
    NSArray *subviews=[self.contentView subviews]; 
    for(UIView* view in subviews){ 
     if([view isEqual:self.leftImage]){ 
      [self.leftImage setHighlightedImage:[UIImage APP_CRYSTAL_SELECT]]; 
     } 
    } 
    } 
} 

回答

16

對於多重選擇,建立一個NSMutableArray伊娃(在這種情況下selectedIndexPaths)來保存選定的項目。在didSelectRowAtIndexPath中添加或刪除indexPaths到這個數組。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
     if(![self.selectedIndexPaths containsObject:indexPath]) 
      [self.selectedIndexPaths addObject:indexPath]; 
     else 
      [self.selectedIndexPaths removeObject:indexPath]; 
} 

以後使用selectedIndexPaths來做任何你想做的事!乾杯!

-Akshay

+0

Customcell子類的方法的setSelected獲取的實現代碼如下selectedIndexPaths之前調用,但我想要實現的實現代碼如下類的功能? – Spring

+0

沒關係。只需在didSelectRowAtIndexPath(它在表視圖類中)中實現任何你想要的。由於選擇/取消選擇,可以保留setSelected用於更新UI。 – Akshay

+0

但它會在稍後調用,UI已更新,並且在didSelectRowAtIndexPath中沒有太多工作要做? – Spring

相關問題