Appcelerator Titanium:隐藏的搜索栏在打开新窗口时滑入视图

时间:2014-08-27 13:33:04

标签: ios titanium titanium-mobile appcelerator titanium-alloy

我使用Titanium Alloy框架在TableView上使用searchHidden属性实现了iOS的隐藏搜索栏。

首先它运行良好,搜索栏被隐藏...但是当用户点击菜单项并打开一个新窗口时,它会导致搜索栏突然出现,因为新窗口正在动画进入视图。然后当用户使用TableView返回原始窗口时(通过点击Back),搜索栏就在那里,应该隐藏它。

以下是我的观点:

<Alloy>
    <NavigationWindow id="navWin">
        <Window class="container">
            <TableView onClick="doClick" id="theTable" searchHidden="true">
                <SearchBar></SearchBar>
                <TableViewRow title="Item One"></TableViewRow>
                <TableViewRow title="Item Two"></TableViewRow>
                <TableViewRow title="Item Three"></TableViewRow>
                <TableViewRow title="Item Four"></TableViewRow>
                <TableViewRow title="Item Five"></TableViewRow>
                <TableViewRow title="Item Six"></TableViewRow>
                <TableViewRow title="Item Seven"></TableViewRow>
                <TableViewRow title="Item Eight"></TableViewRow>
                <TableViewRow title="Item Nine"></TableViewRow>
            </TableView>
        </Window>
    </NavigationWindow>
</Alloy>

这是我的控制器:

function doClick() {
   var win = Ti.UI.createWindow({
       title: "Window",
       backgroundColor: "#FFF"
   });
   $.navWin.openWindow(win, {animated: true}); 
};

$.navWin.open();

1 个答案:

答案 0 :(得分:1)

是的,我也面临同样的情况,其中一个解决方案可以设置setSearchHidden方法调用窗口的onFocus,如:

$.mainwin.addEventListener("focus",function(){
    $.theTable.setSearchHidden(true);
});

考虑mainwin是这里Window的id。

<击>的更新

<击>

好的,我还有一个解决方案,但它需要在你的事件监听器中进行更改。

你必须在每个tableViewRow中添加一个视图,并且必须为视图设置bubbleParent为false,并且必须将用于打开另一个窗口的eventlistener添加到新添加的View中,然后你的搜索栏才会起作用。 / p>

类似的东西:

<TableViewRow title="Item One" bubbleParent="false" >
     <View bubbleParent="false" onClick="doClick"></View>
</TableViewRow>

<击> 由于更新1不能使用多行,所以这里是 更新2

在焦点上添加以下内容,不要忘记在打开窗口时隐藏搜索。

$.mainwin.addEventListener("focus",function(){
    $.theTable.setSearchHidden(true);

    setTimeout(function(){
        $.search.show();
    },1000);

});

虽然它也有一点混蛋,但搜索是隐藏的。