UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellStr];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellStr];
}
可在單擊記錄的方法裡記錄下選擇的記錄:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {//table單擊事件
UITableViewCell *cell = [tableView cellForRowAtIndexPath: indexPath];
NSString *str=cell.textLabel.text;
NSDictionary *dict=[self getOneDictByName:str];
if([self isExistsByName:str theArray:selectedData]){
[self removeOneFromArrayByName:str theArray:selectedData];
}else{
[selectedData addObject:dict];
}
[tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
}
代碼中的selectedData是一個NSMutableArray。
然後在cellForRowAtIndexPath方法裡限定cell的accessoryType值。
-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *cellStr= @"cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellStr];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellStr];
}
NSArray *keys=[tempResult allKeys];
NSArray *dicts= [tempResult valueForKey:[keys objectAtIndex:indexPath.section]];
NSDictionary *temp=[dicts objectAtIndex:indexPath.row];
cell.textLabel.text=[temp valueForKey:@"name"];
if([selectedData containsObject:temp]){
cell.accessoryType=UITableViewCellAccessoryCheckmark;
}else{
cell.accessoryType=UITableViewCellAccessoryNone;
}
return cell;
}
上面的if else 要完整。
其實思想就是MVC,視圖只是用來展示,到底展示什麼取決於model;