Помогите с UISearchBar, расположенным в первой ячейке UITableView?Не будет вводить метод searchBar: textDidChange - PullRequest
3 голосов
/ 08 августа 2011

сегодня я создал tableView, похожий на приложение iPhone Contacts.Я поместил TableView в первую ячейку, используя код

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if ([indexPath indexAtPosition:0] == 0) {
        static NSString *CellIdentifier = @"SearchCell";
        UITableViewCell *searchBarCell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
        searchBar = [[UISearchBar alloc] initWithFrame:searchBarCell.frame];
        [searchBarCell addSubview:searchBar];
        return searchBarCell;
    } // ...

Панель поиска отображается правильно, но когда я реализовала методы поиска, я обнаружила, что они не вводятся при вводе в searchBar ..Например, этот метод:

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchTerm

Я думаю, это потому, что searchBar является подпредставлением другого класса, ячейки tableView?Вот почему панель поиска не может получить доступ к методам поиска?Я также установил делегата панели поиска на себя, но все равно ничего.

Может ли кто-нибудь помочь?Заранее большое спасибо:)

Ответы [ 3 ]

2 голосов
/ 08 ноября 2011

Просьба добавить UISearchBarDelegate, как это в .h

@interface CategoriesViewController : UIViewController <UISearchBarDelegate,UITableViewDelegate,UITableViewDataSource>{

и в .m поставить код

searchBar.delegate=self;
2 голосов
/ 09 января 2012

Вы не устанавливаете делегата вашего UISearchBar. Я прочитал в комментарии, что вы сделали это в другой части, но вы должны сделать это после создания объекта. Я имею в виду после строки:

searchBar = [[UISearchBar alloc] initWithFrame:searchBarCell.frame]; 
0 голосов
/ 08 августа 2011

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

...