---
title: "insertRow(at:with:asSubrowOfRow:animate:)"
framework: appkit
role: symbol
role_heading: Instance Method
path: "appkit/nsruleeditor/insertrow(at:with:assubrowofrow:animate:)"
---

# insertRow(at:with:asSubrowOfRow:animate:)

Adds a new row of a given type at a given location.

## Declaration

```swift
func insertRow(at rowIndex: Int, with rowType: NSRuleEditor.RowType, asSubrowOfRow parentRow: Int, animate shouldAnimate: Bool)
```

## Parameters

- `rowIndex`: The index at which the new row should be inserted. rowIndex must be greater than parentRow, and much specify a row that does not fall amongst the children of some other parent.
- `rowType`: The type of the new row.
- `parentRow`: The index of the row of which the new row is a child. Pass -1 to indicate that the new row should be a root row.
- `shouldAnimate`: doc://com.apple.documentation/documentation/Swift/true if creation of the new row should be animated, otherwise doc://com.apple.documentation/documentation/Swift/false.

## Discussion

Discussion important: If parentRow is greater than or equal to rowIndex, or if rowIndex would fall amongst the children of some other parent, or if the nesting mode forbids this configuration, an NSInvalidArgumentException is raised.

## See Also

### Manipulating Rows

- [addRow(_:)](appkit/nsruleeditor/addrow(_:).md)
- [removeRow(at:)](appkit/nsruleeditor/removerow(at:).md)
- [removeRows(at:includeSubrows:)](appkit/nsruleeditor/removerows(at:includesubrows:).md)
