我无法让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
中提供的自定义行的高度,但特别是不在搜索控制器上。我做错了吗?
最佳答案
经过深入调查...
我将搜索控制器的委托设置为相同的类([_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的来源),并且可以正常工作。