0

这是一个移动应用程序,在 iPhone 模拟器上运行,使用 SDK v 3.0.2 GA 和 Alloy 框架。

我有一个窗口,它有一个表视图,该表视图顶部有一个自动完成的搜索栏。当自动完成开始触发时,它会在搜索框下方显示一个带有结果的表格视图,允许用户从结果中进行选择。

这一切都很好,除了在搜索视图中包含 TableView 会导致原始窗口上的 TableView 消失。

代码如下:

myPlaces.xml

<Alloy>
  <Window id="myDrawersWin">
    <RightNavButton>
        <Button id="showMyDrawers" title="Show Drawers" />
    </RightNavButton>
    <Require src="findPlace" id="findPlace"/>
    <TableView id="placeListTable"/>
  </Window>
</Alloy>

查找位置.xml

<Alloy>
  <View id="searchContainer">
    <TextField id="searchInput" hintText="Find a place..." />
  </View>
  <TableView id="searchResultsTable"/>
</Alloy>

findPlace.js

$.searchInput.addEventListener("change", function(){
   if ($.searchInput.value.length > 2 && $.searchInput.value != "Find a place...") {

    // do the search and get a response successfully

            _.each(returnedVenues, function(venue){
                tblData.push(Alloy.createController("venueSearchListItem", venue).getView());
            });

            $.searchResultsTable.setData(tblData);

            $.searchResultsTable.visible = true;

        },
        onerror: function(e){
            console.log("error");
            console.log(e);
        }
    });

    // invoke the HTTP client here

  }
  else {
        $.searchResultsTable.visible = false;
  }
});

查找位置.xml

"#searchContainer":{
    width: "100%",
    height: 50,
    backgroundColor: "#B8D0DB",
    top: 0
}


"#searchInput":{
    width: "80%",
    height: 30,
    backgroundColor: "#FFFFFF"
}

"#searchResultsTable":{
    width: "80%",
    visible: false
}

如果我在 中取出 TableView findPlace.xml,则窗口(placeListTable)上的原始 TableView 显示得很好。如果我重新添加它,它就会消失。此外,如果我将 TableView 移动到它里面,<View id="searchContainer">显示出来(但显然,由于高度限制,不适合searchContainer)。

有任何想法吗?这是一个错误,还是我在这里做一些愚蠢的事情?

谢谢你的帮助。

贾斯汀

4

1 回答 1

1

找到了解决这个问题的方法,正如我所怀疑的那样,这是愚蠢的。

问题是我layout:vertical在窗口样式表上进行了设置,这意味着第二个 TableView 显示在另一个 TableView 下方。删除它解决了问题。

于 2013-06-27T20:48:22.930 回答