Amazon

2012年6月3日日曜日

Titaniumで別Window間で変数を渡す場合の注意点

TabGroupを使っている場合各Windowは
var tabGroup = Titanium.UI.currentWindow.tabGroup;
tabGroup.tabs[1].window
でアクセスできる。
#tabs[n]は追加したタブの数

そこで、window A -> tabGroup -> window Bでそれぞれにローカル変数を定義して、渡してあげる方法が一般的
tabGroup.tabs[1].hogeValue = tabGroup.tabs[1].window.hogehogeValue;
tabGroup.tabs[2].window.hogehogehogeValue = tabGroup.tabs[1].hogeValue;

もっとお手軽にやるならば、Titaniumのグローバル変数を使う。
Ti.Appにグローバル変数を定義する
Ti.App._hogeValue = "hoge";

ここで一つ気をつける事がある。
このグローバル変数、基本的に追記ができないようです。
例えば、配列のグローバル変数を作りたいとき
Ti.App._anArray = [];
Ti.App._anArray.push(['hoge']);
としてもTi.Appは更新されない。
#Ti.App._anArray=[]のまま。
そこでTi.App._anArray=['hoge'];
としてあげると更新される。
つまり別オブジェクトを割り当てることは可能だが、該当オブジェクトを追記(上書き)はできないため、一度ローカル変数で追記したい配列なり連想配列を作った上で、Ti.App._anArrayに割当てあげる。

もし配列に要素を追加したい場合は
var currentWithFriends = Ti.App._withFriends;
var ids = {
    name : e.source.text,
    id : e.source.id,
};
currentWithFriends.push(ids);
Ti.App._withFriends = currentWithFriends;

という感じ。

0 件のコメント:

コメントを投稿

Amazon3