2011-01-28 7 views
1

テーブルビューに名前の配列を表示しています。テーブルビューのすべての名前をチェックする方法

選択した行がチェックで示され、細かくリストに選択された名前が表示されます。

そのために私のコードは

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
    return 1; 
} 


// Customize the number of rows in the table view. 
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    return [self.sourceArray count];; 
} 


// Customize the appearance of table view cells. 
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
    } 

    [cell.textLabel setText:[self.sourceArray objectAtIndex:indexPath.row]]; 

    if ([self.selectedArray containsObject:[agentemails objectAtIndex:indexPath.row]]){ 
     [cell setAccessoryType:UITableViewCellAccessoryCheckmark]; 
    } 
    else 
    { 
     [cell setAccessoryType:UITableViewCellAccessoryNone]; 
    } 

    return cell; 
} 


#pragma mark - 
#pragma mark Table view delegate 

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

    if ([self.selectedArray containsObject:[agentemails objectAtIndex:indexPath.row]]){ 
     [self.selectedArray removeObjectAtIndex:[self.selectedArray indexOfObject:[agentemails objectAtIndex:indexPath.row]]]; 
    } 
    else 
    { 
     [self.selectedArray addObject:[agentemails objectAtIndex:indexPath.row]]; 
    } 

    [tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationNone]; 
    [tableView deselectRowAtIndexPath:indexPath animated:YES]; 
} 

ですが、今私が今まで私が行ってすることができますどのようにテーブル内のすべての名前をチェックする必要があり、それをクリックして使用するときにボタンを選択し、すべて配置する必要があることができますいずれかしてください助けて。

ありがとうございます。

答えて

1

これをやって、あなたのヘッダーでBOOLを入れてみてください:

-(IBAction)buttonPressed:(id)sender{ 
    myBoolean = YES; 
    [tableView reloadData]; 
    myBoolean = NO; 
}

その後、cellForRowAtIndexPathメソッドでは、単にこれを追加します。私ならば

if(myBoolean){ 
    [cell setAccessoryType:UITableViewCellAccessoryCheckmark]; 
}
+0

は、Uにオーラムアクイラに感謝すべての選択ボタンをクリックしてこのコードを使用すると、すべてのテーブル行が選択されますが、選択した行を選択してチェックを外すと、すべてチェックされます。 – MaheshBabu

+0

あなたの問題を解決するために私の答えを編集しました。 –

0
- (IBAction)selectAll:(id)sender 
{ 
    if(myBoolean) 
    { 
     for (NSInteger s = 0; s < self.iTable.numberOfSections; s++) 
     { 
      for (NSInteger r = 0; r < [self.iTable numberOfRowsInSection:s]; r++) 
      { 
       [[self.iTable cellForRowAtIndexPath:[NSIndexPath indexPathForRow:r inSection:s]] setAccessoryType:UITableViewCellAccessoryNone]; 
      } 
     } 

     myBoolean = NO; 
    } 
    else 
    { 
     for (NSInteger s = 0; s < self.iTable.numberOfSections; s++) 
     { 
      for (NSInteger r = 0; r < [self.iTable numberOfRowsInSection:s]; r++) 
      { 
       [[self.iTable cellForRowAtIndexPath:[NSIndexPath indexPathForRow:r inSection:s]] setAccessoryType:UITableViewCellAccessoryCheckmark]; 
      } 
     } 

     myBoolean = YES; 
    } 
} 
関連する問題