これまでにやったことがありますが、もう一度動作させるのに問題があります。いずれにせよ、私のモデルクラスでは、基本的にはソートのための2つの項目を持つ辞書がありますが、私は1つの値だけをYESにし、他のものはNOにします。 UITableViewCellのアイテムの選択を反映させ、選択と選択解除をアニメートする必要があります。だから、モデルクラスで、私はfalseに選択された他の値を変更し、この方法を持っている:UITableView didSelectRowForIndexPathは、チェックマークの選択と選択の解除をアニメーション化しません。
- (void)setSingleSort:(NSString *)key {
for (NSString *str in [_sortOrderDictionary allKeys]) {
if (str != key) {
[_sortOrderDictionary setObject:[NSNumber numberWithBool:NO] forKey:str];
}
}
}
それから私は私のdidSelectRowForIndexPath方法でこのスニペットを持っている:
NSUInteger row = [indexPath row];
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.accessoryType = UITableViewCellAccessoryCheckmark;
[cell setSelected:YES animated:YES];
NSString *key;
BOOL valueAtKey;
key = [_sortCategoryList objectAtIndex:row];
valueAtKey = [[dmgr.SortOrderDictionary valueForKey:key] boolValue];
if (valueAtKey != YES) {
[dmgr.SortOrderDictionary setObject:[NSNumber numberWithBool:!valueAtKey] forKey:key];
[dmgr setSingleSort:key];
UITableViewCell *oldCell = [tableView cellForRowAtIndexPath:_lastIndexPath];
oldCell.accessoryType = UITableViewCellAccessoryNone;
[tableView deselectRowAtIndexPath:_lastIndexPath animated:YES];
}
_lastIndexPath = indexPath;
[tableView reloadData]; //Edited, added this to the end and it seems to work. Don't know why it's needed though since the deslectRowAtIndexPath should animated, along with the setSelected:Animated: right?
バマー、うまくいきません – Crystal