TONY0922のブログ

学んだことを適当に記録していくブログです。主にRubyで仕事してます。最近はJavaScriptとObjectibe-C始めました。Titanium関連もちょいちょい触ってます。更新頻度はそんなに高くないので、ご了承下さい。

Titanium mobileでNavigationWindowで数階層下にあるViewからRootWindowまで一気に戻る。

Titanium SDK:3.2.0
Alloy:1.3.0

iOSのnavigationControllerでpopToRootViewControllerAnimatedみたいな操作が出来ないかなーと思って、
色々調べたけど、標準ではAPIが用意されていないみたい。

したがって、遷移してきた画面をグローバル変数として
配列で保持して、それをFor文で一気にクローズする方法を試してみました。

・次の階層に遷移する際にグローバル変数の配列に画面を格納。

var nextView = Alloy.createController('nextController').getView();
	
// 他のControllerからアクセスできるようにグローバル変数に値を格納。
// Ti.App.NavigationViews = [] を予め定義しておくこと。
Ti.App.NavigationViews.push(nextView);

// 予め、Ti.App.NavigationRootView = $.controller_name でルートビューを入れておく。 
Ti.App.NavigationRootView.openWindow(nextView);

・Rootに戻るときは下記を記述。

for ( i = 0; i < Ti.App.NavigationViews.length; i++) {
	closeView = Ti.App.NavigationViews.length[i];
	Ti.App.NavigationViews.length.closeWindow(closeView);
}
Ti.App.NavigationViews = [];

現在表示しているViewは一番最後に消すのがミソ。