2013-11-14 5 views
0

У меня есть табличный вид, содержащий все страны и их флаги. Я работаю над добавлением панели поиска, и все это работает, пока я не решил переместить панель поиска в панель навигации, разрешенную в iOS7 (для моих целей этот макет работает очень хорошо).SearchBar в панели навигации в iOS7

Теперь таблица загружается нормально, строка поиска отображается нормально. Когда я набираю строку поиска, я вижу, что отфильтрованный список создается через консоль. Все выглядит хорошо, ЗА ИСКЛЮЧЕНИЕМ таблицы результатов поиска никогда не отображается. Другими словами, я не вижу отфильтрованный список в новом представлении таблицы.

Этот метод вызывается для создания отфильтрованного списка:

-(void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope 

Но стандартный метод:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

никогда не вызывается.

Как я уже сказал, он работает нормально, когда панель поиска не находится в панели навигации. Я назначены следующие делегаты и свойства в ViewDidLoad:

searchDisplayController.delegate = self; 
searchDisplayController.searchResultsDataSource = self; 
searchDisplayController.searchResultsDelegate = self; 

searchDisplayController.displaysSearchBarInNavigationBar = YES; 

У меня также есть:

#pragma mark - UISearchDisplayController Delegate Methods 
-(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString { 
// Tells the table data source to reload when text changes 
[self filterContentForSearchText:searchString scope: 
[[searchDisplayController.searchBar scopeButtonTitles] objectAtIndex:[searchDisplayController.searchBar selectedScopeButtonIndex]]]; 
// Return YES to cause the search result table view to be reloaded. 
return YES; 

}

Что мне не хватает ???

+0

Я сделал еще несколько тестов и обнаружили, что: - (void) searchDisplayController: (UISearchDisplayController *) controller willHideSearchResultsTableView: (UITableView *) tableView вызывается. Я попробовал: searchDisplayController.searchResultsTableView.hidden = NO; , но это тоже не сработало. Пожалуйста помоги!!! – SteveM

+0

Обновление: подтверждено, что все делегаты вызываются, кроме ключевого: cellForRowAtIndexPath. Следовательно, причина, по которой я не получаю стол. Другое наблюдение, когда я нажимаю в строке поиска, представление таблицы никогда не тускнеет. – SteveM

+0

Разве кто-нибудь там не работает в этом ??? – SteveM

ответ

1

Я столкнулся с той же проблемой. Все работает нормально, если я добавлю строку поиска в таблицуHeaderView с self.tableView.tableHeaderView = mySearchBar;

Обнаружило что-то интересное: исходный столбец не изменяет размер правильно, поэтому он накладывается на таблицу результатов.

Мое приложение является универсальным. Если я запустил его на iPad, source-tableview будет полностью закрыт, поэтому я не вижу таблицу результатов. Но на iPhone это выглядит следующим образом:

enter image description here

1

У меня была такая же проблема, как Morpheus, и это было из-за наличия self.edgesForExtendedLayout = UIRectEdgeNone; в моем viewDidLoad

Смежные вопросы