7
我有一個過濾器按鈕,在彈出窗口中顯示UITableView。我有我的類別和一個「全部」按鈕來表示沒有過濾器像iTunes一樣存在。集合枚舉時發生了變化,UITableView
我在我的applicationDelegate類中有一個NSMutableDisctionary,用於設置複選標記。當應用程序啓動時,只有全部被選中,其他的都被取消選中。我想要的是當一個不是「全部」的行被選中時,該行被選中,並且全部被取消選擇。同樣,當選擇全部時,所有帶有複選標記的行都不會有複選標記,只有全部選中複選標記(就像應用程序啓動時一樣)。在我的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];
}
兩個問題。首先,我選擇第一行(全部)時出現此錯誤:
Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <__NSCFDictionary: 0x597b3d0> was mutated while being enumerated.
枚舉發生在哪裏?我想因爲我只選擇0行,所以我可以更改其他行,而不僅僅是0行。我不知道該怎麼做。
第二個問題是你想要更新模型類的方式嗎?我不確定這是否被認爲是很好的MVC。謝謝。