TTTableViewVarHeightDelegate

TTTableViewVarHeightDelegate

我无法让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的来源),并且可以正常工作。

10-08 09:12