Three20 TTTableViewController и searchViewController - PullRequest
2 голосов
/ 04 января 2012

Я пытаюсь реализовать добавление получателей в TTMessageController на основе примера из TTCatalog.Все работает нормально, пока я не войду в контроллер поиска - я могу искать и получать результаты, но ничего не происходит, когда я выбираю элементы.Я пытался установить делегатов, но ни один из них не работает.

- (void)loadView {
    [super loadView];

    TTTableViewController* searchController = [[TTTableViewController alloc] init];
    searchController.dataSource = [[FriendsDataSource alloc] initWithApi:self.appDelegate.api];
    searchController.variableHeightRows=YES;
    self.searchViewController = searchController;
    self.tableView.tableHeaderView = _searchController.searchBar;
}

В TTCatalog элементы поиска имеют URL, указывающий на Google - это не очень полезно;)

1 Ответ

2 голосов
/ 04 января 2012

ОК, я нашел ответ :)

Одна строка отсутствовала в коде выше. У меня было чувство, что я должен назначить делегата, но не знал, где:

- (void)loadView {
    [super loadView];

    TTTableViewController* searchController = [[TTTableViewController alloc] init];
    searchController.dataSource = [[FriendsDataSource alloc] initWithApi:self.appDelegate.api];
    self.searchViewController = searchController;
    _searchController.searchResultsTableView.delegate=self;
    self.tableView.tableHeaderView = _searchController.searchBar;
}

Тогда достаточно добавить это, чтобы разрешить переменную высоту:

- (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];
}

И это для обработки выбора:

- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    TTTableImageItemCell *cell = (TTTableImageItemCell *) [tableView cellForRowAtIndexPath:indexPath];
    TTTableImageItem *object = [cell object];
    [_delegate MessageAddRecipient:self didSelectObject:object];
}
...