NSTableView: программно добавление одной строки приводит к выделению множества строк с одинаковыми значениями? - PullRequest
2 голосов
/ 15 марта 2012

Теперь я читал почти все о 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 голосов
/ 21 марта 2012

Использование метода контроллера массива -addObject: является правильным способом обработки вставки.Это гарантирует, что контроллер отправляет правильные сообщения объектам, которые к нему привязаны.

Похоже, что подход контроллера массива работает правильно.

Было бы полезно иметь возможность связывать контроллеры массивак изменяемым массивам и для них правильно контролировать вставки в связанные массивы, но я не думаю, что они предназначены для такой работы.

...