解决这个问题的关键是找出何时更改表格视图的几何形状。来电:
[self.searchDisplayController.searchResultsTableView setFrame:someframe];
创建 UISearchDisplayController 后是徒劳的。答案是这个委托方法:
-(void)searchDisplayController:(UISearchDisplayController *)controller didShowSearchResultsTableView:(UITableView *)tableView {
tableView.frame = someframe;
}
请注意,我也尝试过-searchDisplayController:didLoadSearchResultsTableView
,但在那里没有用。您必须等到它显示出来才能调整它的大小。
另请注意,如果您只是简单地赋值tableView.frame = otherTableView.frame
,搜索结果表会与其对应的搜索栏重叠,因此无法清除或取消搜索!
我的最终代码如下所示:
-(void)searchDisplayController:(UISearchDisplayController *)controller didShowSearchResultsTableView:(UITableView *)tableView {
CGRect f = self.masterTableView.frame; // The tableView the search replaces
CGRect s = self.searchDisplayController.searchBar.frame;
CGRect newFrame = CGRectMake(f.origin.x,
f.origin.y + s.size.height,
f.size.width,
f.size.height - s.size.height);
tableView.frame = newFrame;
}