我有一種形式,其中用戶可以選擇一些字段,對於我選擇的項目使用[cell setAccessoryType:UITableViewCellAccessoryCheckmark];
,我用過的邏輯是,我採用了emptyMutableArray,並在didSelectRowAtIndex委託方法的時候我檢查了是否選擇的indexPath存在於該emptyMutableArray中,如果它的存在意味着該項目已被選中,那麼我從該emptyMutableArray中刪除該indexPath,但是如果該indexPath不存在於其中,那麼我在該emptyMutableArray中添加indexPath。好了之後,我重新加載相同的tableView和當時在方法cellForRowAtIndexPath我再次有一個if語句設置單元格AccessoryType,其中我檢查如果indexPath存在於emptyMutableArray中,如果它存在,我將單元格的AccessoryType設置爲UITableViewCellAccessoryCheckmark我將它設置爲UITableViewCellAccessoryNone, 之後那裏問題來了,當用戶將嘗試編輯這種形式,然後我想顯示已經選擇的項目,那是什麼問題,你們都會從我的代碼理解問題。如何在編輯表單時顯示預先檢查的UITableViewCells。
這是的cellForRowAtIndexPath委託方法的代碼,決定哪些細胞應該具有對號
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
cell.selectionStyle=UITableViewCellSelectionStyleNone;
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
cell.textLabel.font=[UIFont fontWithName:@"verdana" size:13];
cell.backgroundColor=[UIColor clearColor];
else if (tableView==roleTableView) {
cell.textLabel.text = [roleAry objectAtIndex:indexPath.row];
if([emptyMutableArray containsObject:indexPath]){
[cell setAccessoryType:UITableViewCellAccessoryCheckmark];
} else {
[cell setAccessoryType:UITableViewCellAccessoryNone];
}
}
cell.textLabel.textColor = [UIColor darkGrayColor];
return cell;
}
,這是從用戶決定哪些項目應選擇或取消選擇的tableView的didSelectRowAtIndexPath方法方法。
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
else if (tableView==roleTableView){
NSLog(@"IndexPath Obj:-%@",indexPath);
if([emptyMutableArray containsObject:indexPath]){
[emptyMutableArray removeObject:indexPath];
[roleMutableAry removeObject:[roleIdAry objectAtIndex:[roleAry indexOfObject:[NSString stringWithFormat:@"%@",[roleAry objectAtIndex:indexPath.row]]]]];
}
else {
[emptyMutableArray addObject:indexPath];
[roleMutableAry addObject:[roleIdAry objectAtIndex:[roleAry indexOfObject:[NSString stringWithFormat:@"%@",[roleAry objectAtIndex:indexPath.row]]]]];
}
NSLog(@"roleMutableAry:%@",roleMutableAry);
if ([roleMutableAry count]==0) {
//[roleBtn setTitle:@"Select role" forState:UIControlStateNormal];
}
[roleTableView reloadData];
[self loadInvitees];
[peoplesOfDiffRoleTableView reloadData];
}
}
我知道這是典型的我表達確切的問題,但是,一旦你理解的代碼,我將解釋其中同時顯示已選擇(選中)項目第二次出現的問題。
可能你應該清楚你想要什麼?什麼形式?等我已閱讀2次,但我無法想象你的問題。我認爲你應該將對應於單元格的「roleAry」或「roleIdAry」對象添加到「emptyMutableAry」中。之後,您可以輕鬆地將單元格的標題值與「emptyMutableAry」中的標題值進行比較。 –