如何限制用户不能 select 超过三个 TableView 单元格的复选框
How can I restrict user from not to select more than three checkbox of cell of TableView
我正在 tableView 上填充 10 个元素。我正在为 selecting 元素提供复选框,现在我想限制用户不能 select 超过 tableViewCell 的三个元素。我该怎么做?
`- (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;
}
}`
-(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];
}
将 NSUInteger 变量声明为 CheckMarkcount。
@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++;
}
}
}
我正在 tableView 上填充 10 个元素。我正在为 selecting 元素提供复选框,现在我想限制用户不能 select 超过 tableViewCell 的三个元素。我该怎么做?
`- (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;
}
}`
-(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];
}
将 NSUInteger 变量声明为 CheckMarkcount。
@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++;
}
}
}