テンプレートにアクションを追加する
目標
アクションを追加してリストフォーム/詳細フォームのテンプレートをカスタムします。
用意するもの
始めるために必要なものについては
[here](requirements.html)をクリックしてください。
このチュートリアルでは、どうやって簡単に カスタムテンプレートにアクションを追加する かを見ていきます。
⒈ ⒈ スタータープロジェクトをダウンロード
スタータープロジェクト をダウンロードします。
- リストフォームのカスタムテンプレートが 2つ (TasksList および TasksCollection)
- 詳細フォームのカスタムテンプレートが 1つ (TasksDetail)
- データベース (Tasks.4dbase)
⒉ ⒉ 4D for iOS プロジェクトにカスタムテンプレートを追加
以下の操作でテンプレートをインストールします:
- TasksList および TasksCollection テンプレートフォルダーを Tasks.4dbase/Resources/Mobile/form/list フォルダーにドロップ

- TasksDetail テンプレートフォルダーを Tasks.4dbase/Resources/Mobile/form/detail フォルダーにドロップ

⒊ ⒊ リストフォームにアクションを追加
2種類のアクションが利用可能です:
- テーブルアクション
- エンティティアクション
まず最初に、list/TasksList/Sources/Forms/Tables/___TABLE___/___TABLE___ListForm.Storyboard ファイルを開いてみましょう。
TasksList カスタムテンプレートにアクションを追加する
A A テーブルアクションタグを追加
下図のように当該ビューの Controller を選択し、Identity inspector を開いて User Defined Runtime Attributes に以下の記述を追加します:
- Key Path:
actions - Type:
String - Value:
___TABLE_ACTIONS___

B B エンティティアクションタグを追加
ツリーを展開して Animatable Table View を選択し、Identity inspector で User Defined Runtime Attributes に以下の記述を追加します:
- Key Path:
actions - Type:
String - Value:
___ENTITY_ACTIONS___

これでカスタムテンプレートがアクション対応になりました!
フォーム セクションで TaskList カスタムテンプレートを選択し、以下のフィールドを追加します:

続けて、TasksCollection カスタムテンプレートにもアクションを追加しましょう。
TasksCollection カスタムテンプレートにアクションを追加する
まず、list/TasksCollection/Sources/Forms/Tables/___TABLE___/___TABLE___ListForm.Storyboard ファイルを開きます。
A A テーブルアクションタグを追加
作業は TasksList カスタムテンプレートの場合とよく似ています。
下図のように当該ビューの Controller を選択し、Identity inspector を開いて User Defined Runtime Attributes に以下の記述を追加します:
- Key Path:
actions - Type:
String - Value:
___TABLE_ACTIONS___

B B エンティティアクションタグを追加
エンティティアクションを表示する方法は、リスト形式の TableView とグリッド形式の CollectionView で異なります。 後者はスワイプ操作に不向きです。
CollectionView においては操作したいセルに対し、長押し ジェスチャーに反応してアクションを表示させるのが良い方法です。
そのためには、CollectionView のセルを選択して、Identity inspector で User Defined Runtime Attributes に以下の記述を追加します:
- Key Path:
actions - Type:
String - Value:
___ENTITY_ACTIONS___

タッチしたときに触覚フィードバックと拡大エフェクトが発生するように設定するため、User Defined Runtime Attributes に以下の記述も追加します:
- Key Path:
touch.zoomScale - Type:
Number - Value:
0.96(ズーム倍率は好みに応じて調整できます)
フォーム セクションで TasksCollection カスタムテンプレートを選択し、以下のフィールドを追加します:

⒋ ⒋ 詳細フォームにアクションを追加
詳細フォームでは、ナビゲーションバーの "..." 汎用ボタンを使用することもできますが、オリジナルのカスタムアクションボタン を作成することも簡単です。 どちらの場合にも、タグを追加する必要があります。
ナビゲーションバーの汎用ボタンの場合には、詳細フォームの .storyboard ファイルを開いて当該ビューの Controller を選択し、Identity inspector で User Defined Runtime Attributes に以下の記述を追加します:
- Key Path:
actions - Type:
String - Value:
___ENTITY_ACTIONS___

このチュートリアルでは、カスタムの汎用ボタンを作成しましょう。 まず、detail/TasksDetail/Sources/Forms/Tables/___TABLE___/___TABLE___DetailsForm.storyboard ファイルを開きます。
開いたら右下のボタン (More Button) を選択し、Identity inspector で User Defined Runtime Attributes に以下の記述を追加します:
- Key Path:
actions - Type:
String - Value:
___ENTITY_ACTIONS___

見てのとおり、Storyboard ファイルにはいくつかのボタンの画像が不足しています。 これらのファイルは、フォームテンプレートの Resources フォルダー内にあります。 ビルドを実行すれば、これらの画像ファイルはプロジェクトにコピーされます。
たとえば、moreButton.imageset は右下のボタンの関連ファイルです:

フォーム で TasksDetail カスタムテンプレートを選択し、以下のフィールドを追加します:

完成した iOSアプリのリストフォームと詳細フォームが両方ともアクション対応になりました!

完成したプロジェクトをダウンロード