Titanium Studio中的多个屏幕

时间:2012-02-14 12:29:15

标签: iphone titanium

我想构建一个具有多个屏幕的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 而在其他地方,但我只能使这项工作。感谢

3 个答案:

答案 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';