BadmintonCat
BadmintonCat

Reputation: 9586

NSArrayController select inserted indices after insertion not reflected in NSTableView

I have two NSTableViews both bound to their own NSArrayControllers and the user can drag & drop items from table A to table B. Now I want the dropped items in table B to be selected after insertion (so that the table can scroll to them). But it's not working.

Now, I could try to temporarily store the newly inserted objects in an array and then select them in the arrayControllerB via setSelectedObjects(), like this ...

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)");
}

}

Here, setSelectedObjects() does show me the correct amount of newly inserted objects in the target AC but it still doesn't reflect the selection in the associated table view. Can somebody inaugurate me into the holy sanctuary of trivial Cocoa operations that persistently refuse to work?

Upvotes: 0

Views: 305

Answers (1)

BadmintonCat
BadmintonCat

Reputation: 9586

I figured it out. I shall not attempt to tableView.reloadData() after the insertion. That will erase the selection.

Upvotes: 1

Related Questions