我有一个表,其中包含项目名称列和复选框单元格列。 我研究过并发现只有iOS特定的答案(OS X不能采用这些答案)。
我使用数组控制器在NSMutableDictionary中显示项目名称和复选框单元格(当然在控制器的NSArray内部)。
现在由于每列的值绑定在一起,我无法将它们分开。 我研究并发现“共享用户默认控制器”或NSUserDefaults可以用于NSTableView的两个列,但是如何以编程方式填充表?
在连接dataSource并将NSTableView内容“MixedValues”绑定到“共享用户默认控制器”后,我得到了它:
- (void) myItemListFunction
{
for (NSUInteger i = 0; i < myItemList.count; i++)
{
[rows addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys:[myItemList objectAtIndex:i], @"MyItemList", [[NSUserDefaults standardUserDefaults] boolForKey:@"CheckboxCell"], @"CheckboxCell", nil]];
[[NSUserDefaults standardUserDefaults] setValue:rows forKey:@"MixedValues"];
}
[myTableView reloadData];
}
EDIT1:我通过NSLog发现,问题似乎是复选框单元格代码,因为没有显示复选框bool:
[[NSUserDefaults standardUserDefaults] boolForKey:@"CheckboxCell"], @"CheckboxCell"
我不知何故需要将for-loop变量i放入我的boolForKey中,但是如何......
Edit2:使用它在NSLog中至少提供一个bool:
[rows addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys:[myItemList objectAtIndex:i], @"MyItemList", [NSNumber numberWithBool:YES], @"CheckBoxCell", nil]];
编辑3:现在我已经知道了保存复选框单元格的状态,但是在使用arrayForKey时它会使用整个对象数组。我现在需要的是以某种方式使用objectAtIndex:i为模型密钥路径“CheckboxCell”中的每个项目。它仍然没有显示MyItemList的项目...
Edit4:现在看来这段代码只生成一次复选框,但它符合我想要实现的目标:
NSArray *arrayList = [[NSUserDefaults standardUserDefaults] arrayForKey:@"Check"];
arrayList = @[@"0"];
[rows2 addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys:[directoryList objectAtIndex:i], @"Logs", arrayList, @"Check", nil]];
需要做的是在最后一行获取@“Check”以包含objectAtIndex:i ...