我想构建一个具有多个屏幕的iphone应用程序,但我似乎无法使其正常工作。
这是我做的:
app.js
var rotate = Titanium.UI.createButton({
top:205,
left:100,
height:30,
width:120,
backgroundImage:"anim_ctrl_panel_1.png"
});
rotate.addEventListener('click', function()
{
var window = Ti.UI.createWindow({
url:"Window1.js",
title:"Window1"
});
// Titanium.UI.currentTab.open(window,{animated:true});
window.open();
}
);
Window1.js
var win1 = Titanium.UI.createWindow({
title:'Tab 1',
backgroundImage:"photo1.png",
backgroundColor:'#fff'
});
但是当我点击我的按钮时没有任何反应。有人可以说明这是做正确的方法。
这是我的控制台显示的内容:
[UITabBarController setSelectedViewController:]只能选择标签栏控制器的视图控制器列表中的视图控制器。
那么是否有人可以告诉我什么是正确的方法呢?
重要提示:我不希望链接从何处开始,因为我来过这里:
Titanium: navigation from one screen to other 而在其他地方,但我只能使这项工作。感谢
答案 0 :(得分:2)
你不应该只是打开一个窗口。有两种方法可以执行此操作,您可以创建模态窗口,也可以使用导航组。
有一件事是肯定的,你不应该在Window1.js
中重新创建窗口。这种实现方式实际上是错误的,对你的记忆有害。
更好的方法是使用函数来实现。 (您还可以执行更多JavaScript OO)将此代码添加到Window1.js:
function createWindow1(){
var win = Titanium.UI.createWindow({
title:'Tab 1',
backgroundImage:"photo1.png",
backgroundColor:'#fff',
modal: true
});
return win;
}
之后,你可以在app.js
中这样调用它var window = createWindow1();
但是不要忘记首先包含Window1.js文件(在文件顶部,或者至少在调用函数之前)
Ti.include('Window1.js');
现在到open
部分。如您所见,我将参数modal
添加到window元素中。这将使窗口在其他窗口之上打开(这只能执行一次)
更好的方法是使用NavigationGroup。请注意,这不适用于Android,但仅适用于iOS。检查文档的示例。 (上一个链接)。
代码的结构是窗口>导航组>窗口。顶层窗口无需执行任何操作,只需隐藏导航栏即可。使用导航组,您可以执行open(window)
,这样就会打开iOS风格的窗口(左上角有一个箭头)
答案 1 :(得分:1)
实际上Topener推荐的是99%正确...你不想使用include方法,你想使用commonJS模块。这是Appcelerator推荐的方法
https://wiki.appcelerator.org/display/guides/CommonJS+Modules+in+Titanium
答案 2 :(得分:0)
试试这个....
添加window1.js
var win = Ti.UI.currentWindow(); win.title = 'tab 1'; win.backgroungImage="photo1.png"; win.backgroundColor= '#fff';