我有UITableView
,当所有行都有Checkmark
时,我需要启用导航栏按钮。
有办法做到这一点吗?
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
tableData = [NSArray arrayWithObjects:@"1", @"2", @"3", nil];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(print_Message)];
self.navigationItem.rightBarButtonItem.enabled = NO;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"SimpleTableCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
cell.textLabel.text = [tableData objectAtIndex:indexPath.row];
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"didSelectRow");
UIAlertView *messageAlert = [[UIAlertView alloc] initWithTitle:@"Row Selected" message:[tableData objectAtIndex:indexPath.row] delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];
[messageAlert show];
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
if (cell.accessoryType == UITableViewCellAccessoryNone) {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
} else {
cell.accessoryType = UITableViewCellAccessoryNone;
}
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
答案 0 :(得分:1)
只要在索引路径上不会多次调用cellForRowAtIndexPath:
(例如在滚动,强制重新加载,视图重新出现等情况下),您就可以使用{{1 } UITableView
帮助确定是否选择了所有单元格。
为了让indexPathsForSelectedRows
起作用,您需要对代码进行一些更改。
(1)在indexPathsForSelectedRows
中添加self.tableView.allowsMultipleSelection = YES;
。
(2)在初始代码中,您在方法结尾处使用viewDidLoad
和didSelectRowAtIndexPath:
。相反,请使用deselectRowAtIndexPath:
和didSelectRowAtIndexPath:
,以便选中带有复选标记的行,并且不会选中无复选标记的行。
didDeselectRowAtIndexPath: