# Titanium.UI.TableViewSection

> A table view section is a container within a table used to organize table view rows.

- Source: https://titaniumsdk.com/docs/sdk/12.7.0/Titanium.UI.TableViewSection
- Titanium SDK version: 12.7.0
- Kind: proxy
- Platforms: Android, iPhone, iPad, macOS
- Since: Titanium SDK 0.9
- Extends: Titanium.Proxy
- Inheritance: Titanium.Proxy

Use the [Titanium.UI.createTableViewSection](https://titaniumsdk.com/docs/sdk/Titanium.UI.md#createTableViewSection) method or **`<TableViewSection>`** Alloy element to 
create a `TableViewSection`.

Before the table is rendered, the `TableViewSection` [add](https://titaniumsdk.com/docs/sdk/Titanium.UI.TableViewSection.md#add) 
method may be used to add [TableViewRow](https://titaniumsdk.com/docs/sdk/Titanium.UI.TableViewRow.md) objects to a section. After 
it is rendered, one of the `TableView` [insertRowBefore](https://titaniumsdk.com/docs/sdk/Titanium.UI.TableView.md#insertRowBefore), 
[insertRowAfter](https://titaniumsdk.com/docs/sdk/Titanium.UI.TableView.md#insertRowAfter), or 
[appendRow](https://titaniumsdk.com/docs/sdk/Titanium.UI.TableView.md#appendRow) methods must be used instead. 

To remove a row from a section after the table is rendered, use the `TableView` 
[deleteRow](https://titaniumsdk.com/docs/sdk/Titanium.UI.TableView.md#deleteRow) method. 

In order for a section to be visible, either its `headerTitle` or `headerView` property must be 
configured. 

Starting in Release 3.0, you can directly manipulate the sections in a table using the
following `TableView` APIs:

* To set all sections in a table view at one time, use the `TableView`
[sections](https://titaniumsdk.com/docs/sdk/Titanium.UI.TableView.md#sections) property.
* To add an individual section after a table view is rendered, use either the `TableView`
[insertSectionBefore](https://titaniumsdk.com/docs/sdk/Titanium.UI.TableView.md#insertSectionBefore)
or [insertSectionAfter](https://titaniumsdk.com/docs/sdk/Titanium.UI.TableView.md#insertSectionAfter) method.
* To add one or more sections to the end of a table view after it is rendered, use the `TableView`
[appendSection](https://titaniumsdk.com/docs/sdk/Titanium.UI.TableView.md#appendSection) method.
* To remove an individual section after a table view is rendered, use the `TableView`
[deleteSection](https://titaniumsdk.com/docs/sdk/Titanium.UI.TableView.md#deleteSection) method.

Prior to Release 3.0, adding or removing sections individually is not supported. Instead, use the
`TableView` [data](https://titaniumsdk.com/docs/sdk/Titanium.UI.TableView.md#data) property to refresh the whole table with a
new section layout. 

See the description and examples sections of [TableView](https://titaniumsdk.com/docs/sdk/Titanium.UI.TableView.md) for more details 
about how to use `TableViewSection`.

**Note**: On some platforms, `TableViewSection` may be implemented as a type of view
(that is, an object that inherits from [View](https://titaniumsdk.com/docs/sdk/Titanium.UI.View.md)). However, this is an
implementation detail. For portability, you should only use the documented APIs on 
table view sections.

## Properties

### footerTitle

- Type: String
- Platforms: Android, iPhone, iPad, macOS

Title of this section footer.

Using this property and `footerView` together is not supported. Use one or the other. 

On Android, must be set at creation.

### footerView

- Type: Titanium.UI.View
- Platforms: Android, iPhone, iPad, macOS

View to use for this section footer.

Using this property and `footerTitle` together is not supported. Use one or the other. 

On Android, must be set at creation.

### headerTitle

- Type: String
- Platforms: Android, iPhone, iPad, macOS

Title of this section header.

Using this property and `headerView` together is not supported. Use one or the other. 

On Android, must be set at creation.

### headerView

- Type: Titanium.UI.View
- Platforms: Android, iPhone, iPad, macOS

View to use for this section header.

Using this property and `headerTitle` together is not supported. Use one or the other. 

On Android, must be set at creation. 

In Alloy, you can use a `<HeaderView>` element inside a `<TableViewSection>` element:

``` xml
<Alloy>
    <TableView filterAttribute="title">
        <SearchBar platform="android,ios"/>
        <TableViewSection>
            <HeaderView>
                <View backgroundColor="#a00" height="50dp"/>
            </HeaderView>
            <FooterView>
                <View backgroundColor="#0a0" height="50dp"/>
            </FooterView>
            <TableViewRow title="Row 1"/>
            <TableViewRow title="Row 2"/>
            <TableViewRow title="Row 3"/>
        </TableViewSection>
    </TableView>
</Alloy>
```

### rowCount

- Type: Number
- Platforms: Android, iPhone, iPad, macOS
- Permission: read-only

Number of rows in this section.

### rows

- Type: Array<Titanium.UI.TableViewRow>
- Platforms: Android, iPhone, iPad, macOS
- Permission: read-only

Rows in this section.

## Methods

### add

- Platforms: Android, iPhone, iPad, macOS

Adds a table view row to this section.

Should be called before adding the section to a table. Calling `add` on a section
that's already been added to a table does not update the table.

To add a row to a section after it's been added to a table, call one of the
`TableView` methods, [insertRowBefore](https://titaniumsdk.com/docs/sdk/Titanium.UI.TableView.md#insertRowBefore),
[insertRowAfter](https://titaniumsdk.com/docs/sdk/Titanium.UI.TableView.md#insertRowAfter), or
[appendRow](https://titaniumsdk.com/docs/sdk/Titanium.UI.TableView.md#appendRow).

On Android, it is possible to update a section by adding or removing rows and then 
resetting the table view's `data` property. However, this approach is not
portable and is not recommended.

Parameters:

- `row` (Titanium.UI.TableViewRow): Row to add.

### remove

- Platforms: Android, iPhone, iPad, macOS

Removes a table view row from this section.

Should be called before a section is added to a table. Calling `remove` on
a section that's already been added to a table may throw an exception.

To delete a row once the section is added to a table, use the `TableView`
[deleteRow](https://titaniumsdk.com/docs/sdk/Titanium.UI.TableView.md#deleteRow) method.

On Android, it is possible to update a section by adding or removing rows and then 
resetting the table view's `data` property. However, this approach is not
portable and is not recommended.

Parameters:

- `row` (Titanium.UI.TableViewRow): Row to remove.

### rowAtIndex

- Platforms: Android

Returns a row in this section.

Parameters:

- `index` (Number): Section index of a row.

Returns: Titanium.UI.TableViewRow

## Inherited members

7 members are inherited. Each is documented on the type that declares it.

- [Titanium.Proxy](https://titaniumsdk.com/docs/sdk/12.7.0/Titanium.Proxy.md): `addEventListener`, `apiName`, `applyProperties`, `bubbleParent`, `fireEvent`, `lifecycleContainer`, `removeEventListener`

---

- This corpus documents Titanium SDK 13.4.1. Anything here that does not name a version describes 13.4.1.
- Titanium is maintained by TiDev. The Appcelerator toolchain is retired: there is no `appc` CLI, no Appcelerator Studio and no hosted build service. The supported CLI is `titanium` on npm, invoked as `ti`.

