2017-03-10 6 views
-1

tableViewに10個の要素を設定しています。私は要素を選択するためのチェックボックスを与えている、今私はtableViewCellの3つ以上の要素を選択しないようにユーザーを制限したい。どうやってやるの?TableViewのセルのチェックボックスを3つ以上選択しないようにユーザーを制限するにはどうすればいいですか

`- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 

return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
return self.data.count; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath]; 

cell.textLabel.text = [self.data objectAtIndex:indexPath.row]; 

return cell; 
} 

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
if (cell.accessoryType == UITableViewCellAccessoryCheckmark) { 
    cell.accessoryType = UITableViewCellAccessoryNone; 
}else { 
    cell.accessoryType = UITableViewCellAccessoryCheckmark; 
} 
}` 

答えて

1

CheckMarkcountとしてNSUInteger変数を宣言します。

@interface ViewController() 
{ 

    NSUInteger CheckMarkcount; 

} 

-(void)viewDidLoad{ 
    CheckMarkcount = 0; 
} 


-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
    if (cell.accessoryType == UITableViewCellAccessoryCheckmark) { 
     cell.accessoryType = UITableViewCellAccessoryNone; 
     if(CheckMarkcount>0) 
      CheckMarkcount--; 
    } 
    else { 

     if(CheckMarkcount<3) 
     { 
     cell.accessoryType = UITableViewCellAccessoryCheckmark; 
     CheckMarkcount++; 
    } 
    } 
} 
+0

お返事ありがとうございます。しかし、それは正常に動作していない、あなたのコードによると、それは1つのセルだけをチェックすることができます。 – abhi

+0

あなたが実装したコードをuが送信できます... これはf9で動作するので、同じものを使用しました。私はちょうど今チェックした –

+0

私の完全なコードを確認してください.. @Amir_Spartan – abhi

-1
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath]; 



    if (cell.accessoryType == UITableViewCellAccessoryNone) 
    { 

     if(count <3) 
     { 
      cell.accessoryType = UITableViewCellAccessoryCheckmark; 
      count = count + 1; 
     } 
     else 
     { 
      //alert 
      NSLog(@"greater then 3"); 
     } 


    } 

    else 
    { 
     if(count>1) 
     { 
      cell.accessoryType = UITableViewCellAccessoryNone; 
      count--; 
     } 
     else 
     { 
      //show alert 
      NSLog(@"choose only 1"); 
     } 

    } 


    [self.tableView deselectRowAtIndexPath:indexPath animated:YES]; 
} 
+0

@Abhishek Suryawanshiあなたは自分のコードをチェックしますか? – iOS

+0

はい。ブラザーはあなたのコードに従って、すべてのチェックボックスを選択した後、選択を解除すると「選択のみ1」のメッセージが表示されます。 – abhi

+0

@Abhishek Suryawanshi何が私のコードの問題だった – iOS

関連する問題