【问题标题】:move the order of windows in Titanium.UI.iOS.NavigationWindow在 Titanium.UI.iOS.NavigationWindow 中移动窗口的顺序
【发布时间】:2014-05-21 17:28:57
【问题描述】:

我已经创建了一个导航窗口 - Titanium.UI.iOS.NavigationWindow

我添加了三个窗口

我已经打开了所有三个窗口

现在如何在不关闭 window1 和 window 2 的情况下让 window3 先出现

var ani =false;
var winRoot = Titanium.UI.createWindow({
  backgroundColor: 'red',
  title: 'Red Window'
});


var win = Titanium.UI.iOS.createNavigationWindow({
  window: winRoot
});

var button = Titanium.UI.createButton({
    title: 'Open Blue Window'
});
button.addEventListener('click', function(){
    win.openWindow(win1, {animated:ani});
});

winRoot.add(button);





var win1 = Titanium.UI.createWindow({
  backgroundColor: 'blue',
  title: 'Blue Window'
});

var button1 = Titanium.UI.createButton({
    title: 'Open Green Window'
});
button1.addEventListener('click', function(){
    win.openWindow(win2, {animated:ani});
});

win1.add(button1);






var win2 = Titanium.UI.createWindow({
  backgroundColor: 'green',
  title: 'green Window'
});

var button2 = Titanium.UI.createButton({
    title: 'Open Yellow Window'
});
button2.addEventListener('click', function(){
    win.openWindow(win3, {animated:ani});
});

win2.add(button2);





var win3 = Titanium.UI.createWindow({
  backgroundColor: 'yellow',
  title: 'yellow Window'
});



var button3 = Titanium.UI.createButton({
    title: 'Open Blue Window'
});
button3.addEventListener('click', function(){
    win.openWindow(win1, {animated:ani});
});

win3.add(button3);


win.open();

在 button3 中,如果不关闭黄色和绿色窗口,我将无法返回蓝色窗口

【问题讨论】:

    标签: titanium titanium-mobile titanium-alloy


    【解决方案1】:

    您不能在 NavigationWindow 中打开同一个窗口两次。如果你想把它放在前面,你必须关闭它,然后再打开:

    以下是您修改的代码。我创建了一个事件监听器,它基于按钮自定义属性 target 关闭和打开给定窗口:

    var windows = {};
    
    function openWindow() {
        win.closeWindow( windows[this.target] );    
        win.openWindow( windows[this.target] );
    }
    
    windows.red = Titanium.UI.createWindow({
      backgroundColor: 'red',
      title: 'Red Window'
    });
    
    var win = Titanium.UI.iOS.createNavigationWindow({
        window: windows.red
    });
    
    var button = Titanium.UI.createButton({
        title: 'Open Blue Window',
        target: 'blue'
    });
    button.addEventListener('click', openWindow);
    windows.red.add(button);
    
    
    windows.blue = Titanium.UI.createWindow({
      backgroundColor: 'blue',
      title: 'Blue Window'
    });
    
    var button1 = Titanium.UI.createButton({
        title: 'Open Green Window',
        target: 'green'
    });
    button1.addEventListener('click', openWindow);
    windows.blue.add(button1);
    
    
    windows.green = Titanium.UI.createWindow({
      backgroundColor: 'green',
      title: 'green Window'
    });
    
    var button2 = Titanium.UI.createButton({
        title: 'Open Yellow Window',
        target: 'yellow'
    });
    button2.addEventListener('click', openWindow);
    windows.green.add(button2);
    
    
    windows.yellow = Titanium.UI.createWindow({
      backgroundColor: 'yellow',
      title: 'yellow Window'
    });
    
    var button3 = Titanium.UI.createButton({
        title: 'Open Blue Window',
        target: 'blue',
    });
    button3.addEventListener('click', openWindow);
    windows.yellow.add(button3);
    
    
    win.open();
    

    另一种方法是创建具有相同参数的新窗口:

    var params = {
        red: {
            window: {
                backgroundColor: 'red',
                title: 'Red Window',
            },
            button: {
                title: 'Open Blue Window',
                target: 'blue'
            }
        },
        blue: {
            window: {
                backgroundColor: 'blue',
                title: 'Blue Window',
            },
            button: {
                title: 'Open Green Window',
                target: 'green'
            }
        },
        green: {
            window: {
                backgroundColor: 'green',
                title: 'Green Window',
            },
            button: {
                title: 'Open Yellow Window',
                target: 'yellow'
            }
        },
        yellow: {
            window: {
                backgroundColor: 'yellow',
                title: 'Yellow Window',
            },
            button: {
                title: 'Open Red Window',
                target: 'red'
            }
        }
    };
    
    function createWindow(color) {
        var win = Titanium.UI.createWindow(params[color].window);
        var button = Titanium.UI.createButton(params[color].button);
        win.add(button);
        button.addEventListener('click', function() {
            navwin.openWindow( createWindow( this.target ) );
        });
        return win;
    }
    
    var navwin = Titanium.UI.iOS.createNavigationWindow({
        window: createWindow('red')
    });
    
    navwin.open();
    

    尝试这两个示例并检查哪种行为更适合您。

    【讨论】:

    • 好的,现在你的问题更清楚了。我创建了两个工作示例,请参阅上面的编辑。
    猜你喜欢
    • 2022-10-15
    • 2018-07-23
    • 1970-01-01
    • 2011-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-17
    相关资源
    最近更新 更多