2015-06-15 1 views
0

У меня есть два NSTableViews, оба связаны друг с другом NSArrayControllers, и пользователь может перетащить & отбрасывать элементы из таблицы A в таблицу B. Теперь я хочу, чтобы выпавшие элементы в таблице B были выбраны после вставки (чтобы таблица могла прокручиваться до них). Но это не работает.NSArrayController выбирает вставленные индексы после вставки, не отраженные в NSTableView

  • Индексы выбора вида таблицы привязаны к индексам контроллера массива в IB.
  • Select Inserted Objects проверяется на контроллерах массивов в IB.
  • Если я проверил arrayControllerB.selectedObjects, он отображает только первый вставленный объект, даже если больше было вставлено.
  • Отбор никогда не отображается в соответствующем представлении таблицы.

Теперь, я мог бы попытаться временно хранить недавно вставленные объекты в массиве, а затем выбрать их в arrayControllerB через setSelectedObjects(), как это ...

func insertIndicesToTargetAC(indexSet:NSIndexSet) 
{ 
    let a = indexSet.toArray(); 
    var tmpObjects = [AnyObject](); 
    for i in a 
    { 
     let sourceItem = sourceAC.arrangedObjects.objectAtIndex(i); 
     let obj:NSManagedObject = createNewFromSourceItem(sourceItem); 
     targetAC.addObject(obj); 
     tmpObjects.append(obj); 
    } 
    sourceAC.removeObjectsAtArrangedObjectIndexes(indexSet); 
    targetAC.setSelectedObjects(tmpObjects); 
    println("\(targetAC.selectedObjects)"); 
} 

}

Здесь setSelectedObjects() показывает мне верное количество вновь вставленных объектов в целевом переменном, но он все равно не отражает выбор в соответствующем представлении таблицы. Может кто-нибудь ознаменовать меня в святилище тривиальных операций какао, которые упорно отказываются работать?

ответ

1

Я понял. Я не буду пытаться tableView.reloadData() после вставки. Это приведет к стиранию выделения.

Смежные вопросы