PopoverにUITableViewを表示するフィルターボタンがあります。カテゴリに「すべて」ボタンがあり、iTunesにフィルタがないことを示しています。コレクションが列挙されている間に突然変異しました。UITableView
私はチェックマークを設定するために私のapplicationDelegateクラスにNSMutableDisctionaryを持っています。アプリが起動すると、Allのみが選択され、それ以外はすべて選択解除されます。私が望むのは、「すべて」ではない行が選択され、その行が選択され、「すべて」が選択解除されるときです。同様に、「すべて」を選択すると、チェックマークの付いたすべての行にはチェックマークが表示されなくなり、「すべて」にチェックマークが付きます(アプリ起動時など)。私のUITableView didSelectRowForIndexPath:では、これを行いました:
MyAppAppDelegate *dmgr = (MyAppAppDelegate *)[UIApplication sharedApplication].delegate;
NSUInteger row = [indexPath row];
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
// All selected
if (row == 0) {
for (NSString *key in dmgr.CategoryDictionary) {
[dmgr.CategoryDictionary setObject:[NSNumber numberWithBool:NO] forKey:key];
}
[dmgr.CategoryDictionary setObject:[NSNumber numberWithBool:YES] forKey:@"All"];
}
else {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
NSString *key = [_categoriesArray objectAtIndex:row];
BOOL valueAtKey = [[dmgr.CategoryDictionary valueForKey:key] boolValue];
valueAtKey = !valueAtKey;
[dmgr.CategoryDictionary setObject:[NSNumber numberWithBool:valueAtKey] forKey:key];
}
2つの質問。まず、最初の行(すべて)を選択するとこのエラーが発生します。
Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <__NSCFDictionary: 0x597b3d0> was mutated while being enumerated.
列挙はどこで起こっていますか?私は行0を選択するだけなので、私は思った、私は他の行だけでなく、行0を変更することができます。私はここでこれについて何をすべきか分からない。
2番目の質問は、これがモデルクラスを更新する方法ですか?これが良いMVCと考えられるかどうかはわかりませんでした。ありがとう。