23 11 2012 javascript iPhone Ti Tweet
Titanium Mobile iPhone/Androidアプリ開発入門の簡易RSSリーダーをAlloyで書きなおしてみた
CoffeeScrptで開発する方法については、ここを参照のこと。
軽くハマったのはviewかな。
views/index.xml
最初TabGroupにidを設定したら、$.index.openでエラーがでた。
結局$.indexってなんじゃろか?とドキュメントを読んだら解決した。
要するにViewのトップレベルには
- Ti.UI.Window
- Ti.UI.TabGroup
- Ti.UI.iPad.SplitWindow
のいずれかが必要で、idが明示的に指定されてない場合には、そのファイル名がidとして利用される。
規約に従うことにしたらxmlはシンプルになった。
<Alloy> <TabGroup> </TabGroup> </Alloy>
controllers/index.coffee
コントローラーは本の通りに。スタイルとかも全部コントローラーに書いちゃったのでindex.tssはいじってない。
createApplicationTabGroup = -> tab1 = createRSSTab 'Developer Blog', 'http://developer.appcelerator.com/blog/feed' tab2 = createRSSTab 'Q&A', 'http://developer.appcelerator.com/questions/feed/newest' $.index.addTab tab1 $.index.addTab tab2 return createRSSTab = (title, url) -> win = Ti.UI.createWindow title: title tab = Ti.UI.createTab title: title icon: 'KS_nav_views.png' window: win tableView = Ti.UI.createTableView {data:[]} win.add(tableView) win.addEventListener 'open', -> query = String.format "select * from rss where url = '%s'", url Ti.Yahoo.yql query, (res) -> if res.success is false alert("Yahoo YQL error.") return res.data.item.forEach (item) -> tableView.appendRow title: item.title color: '#000' link: item.link hasChild: true return tableView.addEventListener 'click', (event) -> detailWin = Ti.UI.createWindow {title: event.rowData.title, backgroundColor: '#fff'} webView = Ti.UI.createWebView {url: event.rowData.link} detailWin.add(webView) tab.open(detailWin) return return tab createApplicationTabGroup() $.index.open()