У меня есть два 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()
показывает мне верное количество вновь вставленных объектов в целевом переменном, но он все равно не отражает выбор в соответствующем представлении таблицы. Может кто-нибудь ознаменовать меня в святилище тривиальных операций какао, которые упорно отказываются работать?