NSTableView:以编程方式添加一行会导致选择具有相同值的多行?

时间:2012-03-15 17:12:02

标签: objective-c cocoa nsmutablearray nstableview nsarraycontroller

现在,我一直在阅读有关NSArrayController的所有内容 我已经正确设置了我的xib,NSArrayController,NSTableView和绑定 - 一切正常,除了我的NSTableView的一个奇怪的行为。

首先用一些代码来描绘场景:

@implementation MyAppDelegate

@synthesize arrayController, dataArray;

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    self.dataArray = [NSMutableArray array];
}

- (IBAction)myControllerAddAction:(id)sender {
    NSString *val = [[NSDate date] description];
    NSMutableDictionary *item = [NSMutableDictionary dictionaryWithObjectsAndKeys:val, @"date", nil];
    [serversController addObject:item];
}

- (IBAction)myArrayAddAction:(id)sender {
    NSString *val = [[NSDate date] description];
    NSMutableDictionary *item = [NSMutableDictionary dictionaryWithObjectsAndKeys:val, @"date", nil];
    [[self mutableArrayValueForKey:@"dataArray"] addObject:item];
}

@end

使用-mutableArrayValueForKey:@"myNSArrayControllerStore"并通过返回的NSMutableArray代理-addObject:myDictionary添加对象,数组控制器指示表视图绘制新内容但是选择所有行NSCell

中的相同

enter image description here

使用数组控制器的-addObject:myDictionary它将绘制新行并选择新添加的行:

enter image description here

(在两个屏幕上,我每秒都连续点击多次)

为什么?
使用[NSMutableArray -addObject:]时,我是否需要自行处理正确的行选择? 或者这是一个错误吗?

  

Mac OS 10.7.3
  Xcode 4.3
  基础SDK 10.7
  部署目标10.6

1 个答案:

答案 0 :(得分:0)

使用数组控制器-addObject:方法是处理插入的正确方法。它确保控制器将正确的消息发送给绑定到它的对象。

听起来阵列控制器方法工作正常。

能够将数组控制器绑定到可变数组并且正确地监视绑定数组的插入是有用的,但我不认为它们是以这种方式工作的。