Titanium mobileの基礎15〜TableViewの作成
Xcodeでさんざん苦しめられて結局まだ解決していないTableViewに、Titaniumで向き合うときがきた。
初期状態でリストを表示する。
セルをタッチするとナビゲーションバーつきの詳細ページへ移動する。
ポイント
・リストの項目はひとつずつ設定する
・ナビゲーションバーの「戻る」ボタンにあたる部分の文字列は自動的に設定される
・どのセルがクリックされたかはイベント変数eの中のrowDataが持っている値を使う
・詳細画面のviewは別ファイルに分ける
ソース
タブグループアプリのソースを改造する。
app.js
// タブグループの作成 var tabGroup = Ti.UI.createTabGroup(); // ウィンドウの作成 var win1 = Ti.UI.createWindow({ title: 'win1', backgroundColor: 'blue' }); var win2 = Ti.UI.createWindow({ title: 'win2', backgroundColor: 'yellow' }); // タブの作成 var tab1 = Ti.UI.createTab({ icon: 'KS_nav_ui.png', title: 'Tab1', window: win1 }); // テーブルに表示するリストの作成 var data = [ // 1行目の情報 { title:'Album 1', //アルバム管理アプリを想定 hasChild:true, //次の階層におりるかどうか dest:'album_1.js' // 遷移先の画面 }, // 2行目の情報 { title:'Album 2', //アルバム管理アプリを想定 hasChild:true, //次の階層におりるかどうか dest:'album_2.js' // 遷移先の画面 } ]; // TableViewの生成 var table = Ti.UI.createTableView({ // 生成時にデータを設定 data: data }); // セルがクリックされたときのイベント設定 table.addEventListener('click', function(e) { // セルがクリックされると、eにrowData(行データ)が入ってくるのでそれを使う if (e.rowData.hasChild) { // 「次の階層に降りる」プロパティがtrueであれば var w = Ti.UI.createWindow({ url: e.rowData.dest,//遷移先のURLデータを取り出して設定 title: e.rowData.title,//遷移先のタイトルを取り出して設定 backgroundColor: 'white' }); tab1.open(w); } }); var view = Ti.UI.createView(); view.add(table); win1.add(view); var tab2 = Ti.UI.createTab({ icon: 'KS_nav_ui.png', title: 'Tab2', window: win2 }); tabGroup.addTab(tab1); tabGroup.addTab(tab2); tabGroup.open(); // タブ1にバッジをつける(iOSのみ・Android不可) if (Ti.Platform.osname == 'iphone') { tabGroup.tabs[0].setBadge(2); }; // 選択中のタブ番号取得 Ti.API.info(tabGroup.tabs[0].title);
album_1.js
var view_album_1 = Ti.UI.createView(); var label_album_1 = Ti.UI.createLabel({ color: '#999', text: 'album 1', height: 32, width: 150, top: 120 }); view_album_1.add(label_album_1); // カレントウィンドウに設定 Ti.UI.currentWindow.add(view_album_1);
album_2.js
var view_album_2 = Ti.UI.createView(); var label_album_2 = Ti.UI.createLabel({ color: '#999', text: 'album 2', height: 32, width: 150, top: 120 }); view_album_2.add(label_album_2); // カレントウィンドウに設定 Ti.UI.currentWindow.add(view_album_2);