---
title: "init(of:selection:columnCustomization:columns:rows:)"
framework: swiftui
role: symbol
role_heading: Initializer
path: "swiftui/table/init(of:selection:columncustomization:columns:rows:)"
---

# init(of:selection:columnCustomization:columns:rows:)

Creates a table with the given columns and rows that supports selecting multiple rows that generates its data using values of the given type and has dynamically customizable columns.

## Declaration

```swift
nonisolated init(of valueType: Value.Type, selection: Binding<Set<Value.ID>>, columnCustomization: Binding<TableColumnCustomization<Value>>, @TableColumnBuilder<Value, Never> columns: () -> Columns, @TableRowBuilder<Value> rows: () -> Rows)
```

## Parameters

- `valueType`: The type of value used to derive the table’s contents.
- `selection`: A binding to a set that identifies the selected rows IDs.
- `columnCustomization`: A binding to the state of columns.
- `columns`: The columns to display in the table.
- `rows`: The rows to display in the table.

## Discussion

Discussion Each column in the table that should participate in customization is required to have an identifier, specified with customizationID(_:).

## See Also

### Creating a table with dynamically customizable columns

- [init(of:columnCustomization:columns:rows:)](swiftui/table/init(of:columncustomization:columns:rows:).md)
- [init(of:selection:sortOrder:columnCustomization:columns:rows:)](swiftui/table/init(of:selection:sortorder:columncustomization:columns:rows:).md)
- [init(of:sortOrder:columnCustomization:columns:rows:)](swiftui/table/init(of:sortorder:columncustomization:columns:rows:).md)
