7

長い間インターネット全体を検索しましたが、適切な答えが得られませんでした。UITableView を編集モードにして、一度に複数の行を選択しています。うまく機能していますが、iPhoneのメールアプリと同じように、チェックマークの色を赤から青に変更したかったのです。

どんな助けでも大歓迎です。

編集版:

これが私のコードです...

私の ViewDidLoad 関数で:

- (void)viewDidLoad
{
   ...

   [deviceTableVIew setAllowsSelectionDuringEditing:YES];
   [deviceTableVIew setAllowsMultipleSelectionDuringEditing:YES];

   [super viewDidLoad];
}

テーブルビューの編集モードを次のように設定する 2 つの UIButtons があります。

-(IBAction)control:(id)sender{
   btnControl.enabled = false;
   btnControl.hidden = true;        
   btnCancel.enabled = true;
   btnCancel.hidden = false;    
   stateToggleToolbar.hidden = false;    
   [self.deviceTableVIew setEditing:YES animated:YES];
}

-(IBAction)cancel:(id)sender{
   btnCancel.enabled = false;
   btnCancel.hidden = true;
   btnControl.enabled = true;
   btnControl.hidden = false;    
   stateToggleToolbar.hidden = true;
   [self.deviceTableVIew setEditing:NO animated:YES];
}

UITableView デリゲート メソッドは次のとおりです。

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

   //setting up the cells here

   return cell;
}


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

     if ([tableView isEditing] == YES) {
       // Do Nothing
     }else{
       [self.navigationController pushViewController:viewController animated:YES];
     }

  }

  -(void) tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{

  }

  - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{

      return 3;
  }
4

3 に答える 3

0

サポートされていないため、チェックマークの色を変更することはできません。できることは、画像を作成し、次のコードを cellForRowAtIndexPath に追加することです。

 - (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    selected=[[NSMutableArray alloc] init];
    for(int i=0;i<10;i++){
        [selected addObject:@"0"];
    }
}
- (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.text=[NSString stringWithFormat:@"hello %d",indexPath.row];
    if([[selected objectAtIndex:indexPath.row] isEqualToString:@"1"]){
        cell.accessoryType=UITableViewCellAccessoryCheckmark;
    }
    else{
        cell.accessoryType=UITableViewCellAccessoryNone;
    }
    // Configure the cell...

    return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if([[selected objectAtIndex:indexPath.row] isEqualToString:@"0"]){
        [selected replaceObjectAtIndex:indexPath.row withObject:@"1"];
    }
    else{
        [selected replaceObjectAtIndex:indexPath.row withObject:@"0"];
    }
    [tbl reloadData];
}
于 2012-05-01T10:09:07.500 に答える
-1

チェックマークの画像を変更できます。チェックマーク画像と色でチェックマーク画像を作成します。次に、以下のコードのイメージ名を置き換えます。これは iOS 6 以下で正常に動作します

- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
     [super setSelected:selected animated:animated];
     if (self.isEditing) {
          if (selected){
              for (UIView *subview in self.subviews) {
                if ([NSStringFromClass([subview class]) isEqualToString:@"UITableViewCellEditControl"]) {
                for (UIView *aView in subview.subviews) {
                    if ([NSStringFromClass([subview class]) isEqualToString:@"UITableViewCellEditControl"]) {
                        [aView.layer setContents:(id)[UIImage imageNamed:@"delete_check.png"].CGImage];
                }
             }
          }
       }
    }
  }
}
于 2013-11-25T22:37:56.613 に答える