Titaniumデバッグ

そもそもの話

http://docs.appcelerator.com/titanium/2.0/index.html#!/apiを読む事。
サポートされていない関数やプロパティを実行/指定しても実機じゃ動かない。

Pickerが例外を出して落ちる

PickerRowのtitleに数値型を入れると発生する。
文字列型を入れよう。

Invalid type passed to functionが出る

TabGroup.addTabにundefinedを入れると発生する。

WebView

setScalesPageToFit(true)を実行しないと、bodyのwidthなどが画面と同じサイズにならないので注意。

alert

引数は省略しない。alert("")としないと警告が出る。

TableViewはWindowに入れないとTabGroupに入らない

createTab({window:createTableView()})みたいな事すると例外が出る。
めんどくさいね……

OperationalError: Could not decode to UTF-8 column 'path' with text

コンパイル時のゴミ? のせいで発生するっぽいエラー。
ユーザフォルダの.deltafyを削除するとうまく行く


生涯現役: OperationalError: Could not decode to UTF-8 column 'path' with text ...

addEventListenerで渡ってくるイベント

event.type イベント名
event.source イベントが発生したUIのインスタンス

TableViewの各rowを求める時

TableView.data[0].rowsプロパティから。


http://blog.shokuan-taro.net/?p=6

TabGroup.addTabに直接Tabを入れてはいけない

Ti.UI.createTabGroup().addTab(Ti.UI.createTab());

こういうかんじのやり方だと、タブを何度か変更しているうちに「Adding an event listener to a proxy that isn't already in the context」が発生してWindowが更新されなくなる。
直接addTabに突っ込まなければよくて、変数に一度入れたり関数の戻り値として渡したりすればOK
……が、他にも発生条件があるっぽいので注意したい。

const group = Ti.UI.createTabGroup();
[Ti.UI.createTab(), Ti.UI.createTab(), Ti.UI.createTab()].forEach(group.addTab);
//あるいはコレ→[{window:Ti.UI.createWindow()}].map(Ti.UI.createTab).forEach(group.addTab);

これも失敗する。
配列を一度変数に格納してからforEachを行えばOK

[Android]タイトルバーを消したい

tiapp.xmlのnavbar-hiddenをtrueにする

[iPhoneのみ?]addEventListenerを実行するとindex 1 beyond bounds [0 .. 0]が発生する

第一引数にイベントリスナーとして登録する関数を入れると発生する。
第一引数にはイベント名(clickとか)を書くこと。