   private func reloadDataForRow(row: Int) {
     guard row >= 0 else { return }
     let item = view.itemAtRow(row)!
-    let indexes = NSMutableIndexSet(index: row)
+    reloadDataForItem(item)
+  }
+
+  private func reloadDataForItem(item: AnyObject?) {
+    let indexes = NSMutableIndexSet(index: view.rowForItem(item))
     if let parent = view.parentForItem(item) {
       indexes.addIndex(view.rowForItem(parent))
     } else {

        popoverViewController = storyboard.instantiateControllerWithIdentifier("OptionsEditorPopover") as? OptionsEditorPopoverViewController
      }
      popoverEditor.contentViewController = popoverViewController
      popoverViewController.setRepresentedOptionNode(optionNode, level: optionLevel)
      popoverViewController.popover = popoverEditor
      popoverEditor.delegate = self

             "Mismatch in storyboard column identifier and OptionLevel enum")
      return
    }
    let optionItem = editor.itemAtRow(editor.clickedRow)!
    let optionNode = optionNodeForItem(optionItem, outlineView: editor)

    // Verify that the column is editable.
    if OptionsEditorController.bindingsControlledColumns.contains(columnIdentifier) ||
