<!--
{
  "availability" : [
    "macOS: 10.5.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "AppKit",
  "identifier" : "/documentation/AppKit/NSBrowserDelegate/browser(_:validateDrop:proposedRow:column:dropOperation:)",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Method",
  "symbol" : {
    "kind" : "Instance Method",
    "modules" : [
      "AppKit"
    ],
    "preciseIdentifier" : "c:objc(pl)NSBrowserDelegate(im)browser:validateDrop:proposedRow:column:dropOperation:"
  },
  "title" : "browser(_:validateDrop:proposedRow:column:dropOperation:)"
}
-->

# browser(_:validateDrop:proposedRow:column:dropOperation:)

Sent to the delegate during a dragging session to determine whether a drop should be accepted and to obtain the drop location. This method is required for a browser to be a drag destination.

```
@MainActor optional func browser(_ browser: NSBrowser, validateDrop info: any NSDraggingInfo, proposedRow row: UnsafeMutablePointer<Int>, column: UnsafeMutablePointer<Int>, dropOperation: UnsafeMutablePointer<NSBrowser.DropOperation>) -> NSDragOperation
```

## Parameters

`browser`

The browser.

`info`

The drag session information.

`row`

On input, the proposed drop row. On output, the drop row.

`column`

On input, the proposed drop column. On output, the drop column.

`dropOperation`

On input, the proposed drop location. On output, the drop location.

## Return Value

The drag operation that the data source is to perform. For the browser to accept the drop, it must not be [`NSDragOperationNone`](/documentation/AppKit/NSDragOperation/NSDragOperationNone).

## Discussion

The browser proposes a drop column, row, and row-relative location for the drop based on the pointer position, as shown in this table:

|Drop relative location                                                       |Description                                                                                                             |
|-----------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------|
|``doc://com.apple.appkit/documentation/AppKit/NSBrowser/DropOperation/on``   |Dragging location (`dragInfo``.draggingLocation`) is closer to the middle of `row` than to either of its vertical sides.|
|``doc://com.apple.appkit/documentation/AppKit/NSBrowser/DropOperation/above``|Dragging location is between two rows. Indicates a drop location above `row` and below `row` `- 1`.                     |

These are a few examples of how to specify a drop location:

|                    |Row index              |Row-relative location                                                        |
|--------------------|-----------------------|-----------------------------------------------------------------------------|
|On row 2            |`2`                    |``doc://com.apple.appkit/documentation/AppKit/NSBrowser/DropOperation/on``   |
|Between rows 2 and 3|`3`                    |``doc://com.apple.appkit/documentation/AppKit/NSBrowser/DropOperation/above``|
|Below the last row  |`[sender numberOfRows]`|``doc://com.apple.appkit/documentation/AppKit/NSBrowser/DropOperation/above``|
|All rows            |`-1`                   |``doc://com.apple.appkit/documentation/AppKit/NSBrowser/DropOperation/on``   |

## See Also

[`registerForDraggedTypes(_:)`](/documentation/AppKit/NSView/registerForDraggedTypes(_:))

Registers the pasteboard types that the view will accept as the destination of an image-dragging session.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)