我正在iOS 7&中实现一个UISearchDisplayController。 8个应用程序我正在使用Storyboard来构建界面,并且我已经成功地将搜索控制器添加到我的表中,并且所有内容都很好,以便搜索工作正常。
我的问题是已使用“自动布局”配置表格行,以根据单元格的内容提供动态行高。虽然常规表中的布局很好,但这些约束不会应用于搜索结果表中。这是一些漂亮的图片来展示我的意思。
每个教程和一些文档都假设结果表具有静态高度,建议是使用tableview.rowHeight
或从tableView:heightForRowAtIndexPath
返回一个浮点数。
在cellForRowAtIndexPath方法中,我将我的单元格从常规表视图中出列,如下所示:
ScheduleTableViewCell * cell = [self.scheduleTable dequeueReusableCellWithIdentifier:@"cell"];
我原本以为我会在故事板中使用单元格,但显然不包括约束。
我能采取一些方法来实现这一目标吗?或者我是否需要手动确定每行的高度,就像我在AutoLayout之前做的那样?像某种肮脏的动物?
答案 0 :(得分:3)
使用自调整单元格时,应将两个表的rowHeight属性设置为UITableViewAutomaticDimension,并为两个表设置estimatedRowHeight。你可以在viewDidLoad中执行此操作,不需要实现heightForRowAtIndexPath。
答案 1 :(得分:1)
根据@ rdelmar的回答,我想补充一下。对于像我一样困惑的人,你应该设置两个属性如下:
// for the main tableView
self.tableView.rowHeight = UITableViewAutomaticDimension
self.tableView.estimatedRowHeight = 100 //or whatever height you prefer
// and for searchDisplayController
self.searchDisplayController?.searchResultsTableView.rowHeight = UITableViewAutomaticDimension
self.searchDisplayController?.searchResultsTableView.estimatedRowHeight = 100 //or whatever height you prefer
P.S。抱歉,我无法添加评论,因此我正在撰写答案
答案 2 :(得分:0)
我在过去的几天里也为此苦苦挣扎,不幸的是rdelmar的回答并没有为我解决问题,所以这就是我必须要解决的问题:
而不是:
self.searchDisplayController.searchResultsTableView.rowHeight = UITableViewAutomaticDimension;
我不得不使用:
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
return UITableViewAutomaticDimension;
}
这只让我走了一半。 tableViewCell中的约束也存在潜在问题。我的textView需要动态高度,所以我没有为textView提供任何高度约束。它根据它对上下视图的约束适当调整大小。这在我原来的tableView中运行得很好,但在searchResultsTableView中却不是这样。
我必须将高度约束添加到textView并使用> =(大于或等于)常量。最后,searchResultsTableView模仿我原来的tableView。