Ste*_*her 25 iphone uitableview uisearchdisplaycontroller
我已将UITableView行高在Interface Builder中设置为54.0.我有一个UISearchDisplayController观点.当用户点击其中的搜索栏时,表格会正确调整大小.但是,当他们开始键入(并且实际进行搜索)时,行高度会降低.在搜索点击取消之前,它会出错.
我在Apple的网站上找不到关于此行为的文档.
我已尝试在UISearchDisplayDelegate委托调用中设置行高.这可能是正确的方法,但我不知道细节,也无法使其发挥作用.
我也尝试过实施- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;.这很有效,但是我在这个列表中有数以千计的条目,并且无法获得性能.
解决这个问题的正确方法是什么?
Chr*_*ers 56
执行此操作的正确方法是使用以下委托.
- (void)searchDisplayController:(UISearchDisplayController *)controller didLoadSearchResultsTableView:(UITableView *)tableView
{
tableView.rowHeight = 54.0f; // or some other height
}
Run Code Online (Sandbox Code Playgroud)
在UITableView创建或显示时调用它.
如果您searchDisplayController.searchResultsTableView在未执行搜索时碰巧使用其他代码,则会提前创建UITableView.如果使用willShow委托方法设置rowHeight,如果事先创建了tableView,它将错过更改rowHeight的时间(由于某种原因).
Ste*_*her 16
我找到了!
假设表存储在tableView:
- (void)viewDidLoad;
{
[super viewDidLoad];
self.searchDisplayController.searchResultsTableView.rowHeight = tableView.rowHeight;
}
Run Code Online (Sandbox Code Playgroud)
没有必要.
编辑:请参阅netmikey的答案以获得更好的解决方案.
net*_*key 10
史蒂夫,你的解决方案对我不起作用:第一次搜索结果显示正常,但是当用户点击"取消"(关闭搜索栏)然后重新打开它并在其中输入搜索词时,高度再次出错.
DigDog的使用解决方案searchDisplayController:didShowSearchResultsTableView有点工作,但用户在搜索开始时看到了单元格高度"跳跃".
我发现解决这两个问题的解决方案是使用:
- (void)searchDisplayController: (UISearchDisplayController *)controller
willShowSearchResultsTableView: (UITableView *)searchTableView {
searchTableView.rowHeight = myTableView.rowHeight;
}
Run Code Online (Sandbox Code Playgroud)
......在UISearchDisplayDelegate.
问候,netmikey