我有一个视图控制器,您可以在其中更改性别。我有一个tableview加载了一个数组,只有两个字符串,男性或女性。
如果用户最初设置为女性,那么女性单元格上有一个复选标记。然后,当您点击男性细胞时,应检查男性细胞,并且应该取消选中女性细胞。
我的逻辑几乎正常,但是当我第一次点击未经检查的单元格(男性单元格)时,选中的单元格不会取消选中(因此检查男性和女性)。但之后我再次选择一个单元格,它可以根据需要运行。
如何修复此错误...它只会在我第一次点击未经检查的单元格时生成,然后才能正常工作。
我经历了很多SO链接,但仍然得到了相同的结果。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"genderCell"];
cell.textLabel.text = self.genderArray[indexPath.row];
if (([UserParseHelper currentUser].gender = @"Female"))
{
if (indexPath.row == 1)
{
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
}
else if (([UserParseHelper currentUser].gender = @"Male"))
{
if (indexPath.row == 0)
{
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
}
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView cellForRowAtIndexPath:indexPath].accessoryType = UITableViewCellAccessoryCheckmark;
}
-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView cellForRowAtIndexPath:indexPath].accessoryType = UITableViewCellAccessoryNone;
}
答案 0 :(得分:0)
所有相同只是在didSelectRowAtIndexPath
方法中更改当前用户的性别。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.row==0)
[UserParseHelper currentUser].gender = @"Male";
else if(indexPath.row==1)
[UserParseHelper currentUser].gender = @"Female";
[tableView reloadData];
}
无需didDeselectRowAtIndexPath
方法
/*-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView cellForRowAtIndexPath:indexPath].accessoryType = UITableViewCellAccessoryNone;
}*/