2011-08-08 13 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ののIVAR(この場合は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(テーブル・ビュー・クラスにあります)内の任意のものを実装してください。選択/選択解除のためにUIを更新するためにsetSelectedを保持することができます。 – Akshay

+0

しかし、それは後で呼び出されるので、UIは既に更新されていますし、didSelectRowAtIndexPathで行うことはあまりありません。 – Spring

関連する問題