我无法让variableHeightRows在搜索视图控制器上工作。
TTTableViewController* searchController = [[TTTableViewController alloc] init];
searchController.dataSource = [[[SomeDataSource alloc] init] autorelease];
searchController.variableHeightRows = YES; // this doesn't affect the table
self.searchViewController = searchController;
[searchController release];
self.tableView.tableHeaderView = _searchController.searchBar;
_searchController.pausesBeforeSearching = YES;
[_searchController setSearchResultsDelegate:self];
它始终显示默认高度的行。在具有相同数据源的常规表视图中,行的高度设置为我在+ (CGFloat)tableView:(UITableView*)tableView rowHeightForObject:(id)object
中提供的自定义,但特别是在搜索控制器上没有。
我做错了吗?
答案 0 :(得分:1)
经过深入调查......
我将搜索控制器的委托设置为同一个类([_searchController setSearchResultsDelegate:self];
),这会阻止创建TTTableViewVarHeightDelegate委托,因此,未调用自定义heightForRowAtIndexPath。我补充说:
- (CGFloat)tableView:(UITableView*)tableView heightForRowAtIndexPath:(NSIndexPath*)indexPath {
id<TTTableViewDataSource> dataSource = (id<TTTableViewDataSource>)tableView.dataSource;
id object = [dataSource tableView:tableView objectForRowAtIndexPath:indexPath];
Class cls = [dataSource tableView:tableView cellClassForObject:object];
return [cls tableView:tableView rowHeightForObject:object];
}
到TTTableViewController类(TTTableViewVarHeightDelegate的源代码)并且它可以工作。