我如何保存应用程序上次查看窗口的状态?
我一直在尝试使用titanium.app.properties而没有运气。我正在使用MVC
所以所有内容都分成了单独的文件。我会通过在模型中创建几个全局变量并使用app.properties调用它来解决这个问题吗?如果您能提供帮助,请举例说明一下吗?
感谢您提供任何帮助< 3
答案 0 :(得分:1)
Pageflow Widget有一个如何处理这个问题的例子。
有一个全局变量,它包含所有已初始化的页面,并将它们推送到数组,如堆栈。
var newPageView = newPage.getView();
pageflow.pages.push(newPage);
然后它有一个后台处理程序:
getPreviousPage: function() {
if (pageflow.pages.length >= 2) {
return pageflow.getPage(pageflow.getCurrentPageId() - 1);
} else {
return null;
}
},
back: function() {
var previousPage = pageflow.getPreviousPage();
if (previousPage) {
var currentPosition = pageflow.getGridCoordinatesForPage(pageflow.getCurrentPageId() - 1);
$.pageflow.animate({ left: currentPosition.left, top: currentPosition.top, duration: 300 }, function() {
$.pageflow.left = currentPosition.left;
$.pageflow.top = currentPosition.top;
pageflow.removeLastPage(true, true);
});
}
},
removeLastPage: function(callPrePostHide, callPrePostShow) {
var remove = pageflow.pages.pop();
remove.removeEventListeners();
if (callPrePostHide) {
remove.preHide();
}
var removeView = pageflow.pagesViews.pop();
$.pageflow.remove(removeView);
pageflow.pagesGridPositions.pop();
if (callPrePostHide) {
remove.postHide();
}
var currentPage = pageflow.getCurrentPage();
if (callPrePostShow && currentPage) {
currentPage.preShow();
}
// move the grid to adapt its new dimensions
var currentPageId = pageflow.getCurrentPageId();
var currentPosition = pageflow.getGridCoordinatesForPage(currentPageId);
$.pageflow.top = currentPosition.top;
$.pageflow.left = currentPosition.left;
// move all the page views
_.each(pageflow.pagesViews, pageflow.fixPagePosition);
// fix grid size
var gridDimensions = pageflow.getGridDimensions();
$.pageflow.width = gridDimensions.width;
$.pageflow.height = gridDimensions.height;
if (callPrePostShow && currentPage){
currentPage.postShow();
}
},
您可以通过下载和运行小部件来查看完整的工作代码。这段代码做了很多,但是你可以看到他们的后退功能如何工作并记住上一个屏幕。
答案 1 :(得分:1)
$.index.open()
保存属性,Ti.App.Properties.setString("lastwin",nameofwindow)
也会更新string.something中的名称:
window.addEventListener( “焦点”,函数(){
Ti.App.Properties.setString("lastwin",window);
});
希望它有所帮助。
答案 2 :(得分:1)
所以我已经能够通过简单地按照另一个答案中的说明来实现它。感兴趣的人如下
//This decides what screen it should open
var lastwin = Ti.App.Properties.getString("lastwin");
if ( lastwin == 'SavedList'){
SavedList.open();
SavedListNav.open();
}
else if (lastwin == 'tomList'){
tomList.open();
TomNav.open();
}
else if (lastwin == 'Recipes'){
Recipes.open();
RecipesNav.open();
}
else MainMenu.open();
//in each function that leads to the specific screen you want do it like so
SavedListsBTN.addEventListener('click', function(e){
Ti.App.Properties.setString("lastwin", 'SavedList');
SavedList.open();
SavedListNav.open();
MainMenuNav.close();
MainMenu.close();
});