Developer

Tile Containers

The tile container represents the container view controller in iOS terms.

Container view controllers let you group together view controllers that work together. This is a task-based approach, where each container controls how the associated view controllers interact. Container view controllers also define transition patterns between the view controllers, resulting in seamless interface patterns. The Extensibility Framework provides support for the most frequently used standard iOS containers:
  • Single view (UIViewController based)
  • Navigation based (UINavigationViewController)
  • Tab (UITabBarController)
  • Split or master-detail (UISplitViewController)

You can specify multiple tile containers if the app contains different navigation patterns. However, mark only one tile as the root to make that tile container the app window’s root view controller. The framework considers only the first root tile.

You are not required to define a tile container. In some cases, the root container is specified by the hosting app (as documented in Adding Configuration-Based Tiles to Programmed View Controllers). The tile container definition should include the tile references that belong to it. The rules for defining tile containers include:
  • Single-view and modal apps having a UIViewController as a root view controller cannot include a tile container in their configuration. Instead, define the corresponding root tile and mark it as root. The root tile must enclose further tile references and supported events and fired actions, which are brought up modally. For example:
    <!— Single View Tile Container -->
      <Tile tileId="Root">
        <P pid="isRoot" value="true" />
              <!—Defines a ‘Settings’ button, which brings up modally the SettingsScreen -->
              <UIElement type=”button”>
    <P pid="text" value="$i_18n.Settings" visible="true" />
    <P pid="halign" value="left" />
    <P pid="width" value="49%" />
    <P pid="height" value="25pt" />
    <P pid="style" value="BlackButton" />
    <!—See Managing Lists for more details on events and actions-->
    <Event id="onClick">
    <Action id="navigate">
    <P pid="target" value="SettingsScreen" />
    </Action>
    </Event>
                </UIElement>
      </ TileContainer >
  • Navigation-based tile containers can contain only one tile reference. The referenced first tile must enclose the further tile references to where the user can navigate, and supported events and fired actions. For example:
    <!—Navigation Based Tile Container -->
      <TileContainer tileContainerId="Root" type="nav">
        <P pid="isRoot" value="true" />
        <P pid="isHeaderVisible" value="false" />
    <!—Define the initial Tile – further tiles belonging to the navigation chain are referenced from the initial tile and so on -->
        	<TileRef ref=”Overview” />
      </ TileContainer >
  • Split-tile containers must include two tile references: the master tile and the detail tile (the same rules apply as for a UISplitViewController). For example:
    <!—Split (Master-Detail) Tile Container -->
    <!—!!! It shall have two tiles: the Master and the Detail -->
      <TileContainer tileContainerId="Root" type="split">
        <P pid="isRoot" value="true" />
        <P pid="isHeaderVisible" value="false" />
        	<TileRef ref=”MasterTile” />
        	<TileRef ref=” DetailTile” />
      </ TileContainer >
  • Tab-based tile controllers must enclose all tile references. For example:
    <!— Tabbed Tile Container -->
      <TileContainer tileContainerId="Root" type="tab">
        <P pid="isRoot" value="true" />
        <P pid="isHeaderVisible" value="false" />
        	<TileRef ref=”FirstTabTile” />
        	<TileRef ref=” SecondTabTile” />
        	<TileRef ref=” ThirdTabTile” />
      </ TileContainer >