UITableView не прокручивается с помощью UISearchBar - PullRequest
4 голосов
/ 30 июня 2010

То, чего я хочу достичь, - это UISearchBar, который перемещается вверх и покрывает UINavBar, и содержит кнопку отмены справа от него.Все идет хорошо, пока я не использую следующую строку кода:

searchDC = [[[UISearchDisplayController alloc] initWithSearchBar:searchBar contentsController:self] autorelease];

В итоге происходит то, что UITableView просто не будет прокручиваться, но все остальное работает как положено.Если я удаляю эту строку, моя навигационная панель становится видимой, а панель поиска просто находится под ней, также не имея кнопки отмены.

Есть идеи?

Код для рисования панели поиска:

self.navigationItem.title = @"Search";
searchBar = [[[UISearchBar alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.view.bounds.size.width, 44.0f)] autorelease];
searchBar.autocorrectionType = UITextAutocorrectionTypeNo;
searchBar.autocapitalizationType = UITextAutocapitalizationTypeNone;
searchBar.keyboardType = UIKeyboardTypeAlphabet;
searchBar.delegate = self;
[searchBar becomeFirstResponder];

tableView.tableHeaderView = searchBar;
tableView.tableHeaderView.frame = CGRectMake(0.f, 0.f, 480.f, 44.f);
searchDC = [[[UISearchDisplayController alloc] initWithSearchBar:searchBar contentsController:self] autorelease];
searchDC.searchResultsDataSource = self;
searchDC.searchResultsDelegate = self;
searchDC.searchResultsTableView.separatorStyle = UITableViewCellSeparatorStyleNone;
searchDC.searchResultsTableView.scrollEnabled = YES;

overlayView.frame = CGRectMake(0, 50, 320, 480);
[self.view addSubview:overlayView];
[self.view bringSubviewToFront:overlayView];

Ответы [ 2 ]

1 голос
/ 30 июня 2010

Недостаточно информации, чтобы ответить на этот вопрос.Вам нужно показать код UIViewController или UINavigation Controller (как .h, так и .m), где вы настраиваете UISearchDisplayController.

РЕДАКТИРОВАТЬ:

Вы реализуете это совершенно неправильно.У Apple есть отличный пример того, как реализовать это http://developer.apple.com/iphone/library/samplecode/TableSearch/Introduction/Intro.html

0 голосов
/ 12 сентября 2013

Из документации Apple,

Delegate for the search display controller (delegate), which responds to events such the starting or ending of a search, and the showing or hiding of the search interface.

Установите delegate на UITableViewController

 searchDC.delegate = self;

Также добавьтеsearchDC searchBar к заголовку tableView

 [self.tableView setTableHeaderView:searchDC.searchBar];
...