我使用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();
答案 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);
});
虽然它也有一点混蛋,但搜索是隐藏的。