使用Appcelerator在iOS上的TabGroup中打开Windows

时间:2016-01-20 14:03:47

标签: javascript ios titanium appcelerator

我正在重新访问使用Classic(非Alloy)创建的旧应用,需要删除已弃用的窗口:url功能,但在此新更新中,我需要在tabGroup中添加一些导航窗口。

我知道我需要创建一个我可以调用的全局,这样我就可以在正确的选项卡中打开新窗口。

有人能指出我正确的方向吗?

所以我真的有两个问题。

  1. 导入另一个JS文件(在Classic中)以替换窗口URL方法的最佳方法是什么?
    1. 如何设置全局设置(再次使用Classic),以便在tabGroup中打开和关闭窗口?
    2. 这是我在tabs.js中的标签设置(在窗口中显示我的其他JS文件的URL)

          // create tab group
      var tabGroup = Ti.UI.createTabGroup({
          tintColor: '#FFF',
          barColor: '#ff5700',
          tabsTintColor:'#333333',
          navTintColor: '#FFF',
          tabsBackgroundColor :'#ff5700'
      });
      
      
      // Assign windows & tabs
      
      var win1 = Titanium.UI.createWindow({ backgroundColor:'#fff', barColor:'#ff5700', url:'team.js', title:'Team', navTintColor:'#FFF', titleAttributes:{color: '#FFF'}});
      var tab1 = Titanium.UI.createTab({ window:win1, icon:'images/team.png', title:'Team', titleColor:'#FFF', activeTitleColor:'#333', activeIcon:'images/team.png', activeIconIsMask:true, iconIsMask:false});
      var win2 = Titanium.UI.createWindow({ backgroundColor:'#fff', barColor:'#ff5700', url:'league.js', title:'League', navTintColor:'#FFF', titleAttributes:{color: '#FFF'}});
      var tab2 = Titanium.UI.createTab({ window:win2, icon:'images/league.png', title:'League', titleColor:'#FFF', activeTitleColor:'#333', activeIcon:'images/league.png', activeIconIsMask:true, iconIsMask:false});
      var win3 = Titanium.UI.createWindow({ backgroundColor:'#fff', barColor:'#ff5700', url:'fixtures.js', title:'Fixtures', navTintColor:'#FFF', titleAttributes:{color: '#FFF'}});
      var tab3 = Titanium.UI.createTab({ window:win3, icon:'images/fixtures.png', title:'Fixtures', titleColor:'#FFF', activeTitleColor:'#333', activeIcon:'images/fixtures.png', activeIconIsMask:true, iconIsMask:false});
      var win4 = Titanium.UI.createWindow({ backgroundColor:'#fff', barColor:'#ff5700', url:'players.js', title:'Players', navTintColor:'#FFF', titleAttributes:{color: '#FFF'}});
      var tab4 = Titanium.UI.createTab({ window:win4, icon:'images/players.png', title:'Players', titleColor:'#FFF', activeTitleColor:'#333', activeIcon:'images/players.png', activeIconIsMask:true, iconIsMask:false});
      var win5 = Titanium.UI.createWindow({ backgroundColor:'#fff', barColor:'#ff5700', url:'more.js', title:'More', navTintColor:'#FFF', titleAttributes:{color: '#FFF'}});
      var tab5 = Titanium.UI.createTab({ window:win5, icon:'images/more.png', title:'More', titleColor:'#FFF', activeTitleColor:'#333', activeIcon:'images/more.png', activeIconIsMask:true, iconIsMask:false});
      
      
      tabGroup.addTab(tab1);  
      tabGroup.addTab(tab2);  
      tabGroup.addTab(tab3);
      tabGroup.addTab(tab4);
      tabGroup.addTab(tab5);
      
      
      tabGroup.open();
      

      以下是我想在其中一个标签中的另一个窗口中调用的方法。我已经删除了大量的代码,因为你不需要看到所有代码!

      var createWin = Titanium.UI.createWindow({
          backgroundColor: 'blue',
          title: 'Create League'
      });
      
      createButton.addEventListener('click', function(){
          tabGroup.activeTab.open(createWin);
      });
      

      我需要以某种方式将 tabGroup.activeTab.open(createWin); 纳入范围!

      任何帮助将不胜感激!

      西蒙

3 个答案:

答案 0 :(得分:3)

您可以使用Ti.App.tabGroup然后Ti.App.tabGroup.activeTab.open(createWin);

将其设为全局

答案 1 :(得分:0)

首先,您的窗口可以作为CommonJS模块位于另一个文件中。 像这样:

//tabTeam.js file

function tabTeam(){
    var win = Ti.UI.createWindow({
        backgroundColor:'yellow'
    });
    //put the code of your window here as usually

    //don't forget to return the window
    return win;
}
module.exports = tabTeam;

然后,对于tabgroup,正如Sebastian所说,你应该选择Ti.App全局属性,如:

Ti.App.tabgroup = Ti.UI.createTabGroup({}
    backgroundColor:'white'
);

并要求窗口,请执行以下操作:

var teamWindow = require("tabTeam")();

并将其添加到标签组:

var tab1 = Ti.UI.createTab({
    icon:'asdasd.png',
    window:teamWindow
});

并使用tabgroup.open()打开tabgroup。

如果你在一个窗口内,想要在同一个标​​签中打开另一个窗口,使用酷炫的iOS导航动画,请执行以下操作:

btOpenWindow.addEventListener('click',function(){
    var profileWindow = require("profile")(parameters);
    Ti.App.tabgroup.activeTab.open(profileWindow);
});

这就是全部!让我知道如果工作=)

答案 2 :(得分:0)

在app.js中创建全局变量

var tabGroupGlobal;

在当前窗口中创建制表符组并将其指定给全局变量

var tabGroup = Ti.UI.createTabGroup({
    tintColor: '#FFF',
    barColor: '#ff5700',
    tabsTintColor:'#333333',
    navTintColor: '#FFF',
    tabsBackgroundColor :'#ff5700'
});

tabGroupGlobal = tabGroup;

现在您可以在任何窗口中使用tabGroupGlobal。

btOpenWindow.addEventListener('click',function(){
    var newWindow = Ti.UI.createWindow({});
    tabGroupGlobal.activeTab.open(newWindow);
});

我认为这可能会对你有所帮助。如有任何错误或建议,请告诉我。