Может ли SearchDisplayController отображать данные перед началом поиска

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

я использовал

[self.searchDisplayController.searchResultsTableView reloadData];

в viewDidLoad, но метод делегата UITableViewDataSource

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

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

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

Код:

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell;

    static NSString *cellIdentifier = @"Cell";

    cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

    if(cell == nil) {

        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
    }


    NSString *category = [searchResults objectAtIndex:[indexPath row]];
    cell.textLabel.text = category;

    cell.textLabel.font = [UIFont systemFontOfSize:14];
    cell.textLabel.numberOfLines = 0;
    cell.textLabel.lineBreakMode = NSLineBreakByWordWrapping;


    return cell;
}

person Shuaib    schedule 07.08.2013    source источник
comment
покажи мне код cellForRowAtIndexPath:   -  person Kanhaiya Sharma    schedule 07.08.2013
comment
проверьте, что ваш searchResult пуст или нет   -  person Kanhaiya Sharma    schedule 07.08.2013


Ответы (2)


Возможно, вы захотите взглянуть на этот вопрос SO. Хотя никогда не пробовал.

Скажите, помогло ли ;-)

ИЗМЕНИТЬ:

После вашего комментария я попробовал ответ, и у меня он сработал нормально (все еще получил затемненный вид, как он говорит в своем ответе. Но не пытался его удалить).

Вот код, который я пробовал в своем приложении:

- (void)viewDidLoad {
    [super viewDidLoad];
    _places = @[ [[RHPlace alloc] initWithName:@"name" address:nil distance:nil andFoursquareUID:@"plop"] ];
    [self.searchDisplayController.searchResultsTableView reloadData];
    CGRect testFrame = CGRectMake(0, 20, self.searchDisplayController.searchBar.frame.size.width, 100);
    self.searchDisplayController.searchResultsTableView.frame = testFrame;
    [self.searchDisplayController.searchBar.superview addSubview:self.searchDisplayController.searchResultsTableView];
}

И вот что я получил: http://cl.ly/image/0k0V3J3H1G1h

Так что, если это не работает для вас, я думаю, у вас есть еще одна ошибка где-то еще.

person DCMaxxx    schedule 07.08.2013
comment
это не сработало ..... я не знаю, почему .... теория была, и причина проблемы была правильно объяснена в сообщении, на которое вы ссылаетесь .... - person Shuaib; 09.08.2013
comment
У меня это не работает.... теперь я делаю это без контроллера отображения поиска и получаю результаты - person Shuaib; 18.08.2013

может быть, вы добавляете данные в массив searchResults, а метод делегата...

-(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString

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

[self.searchDisplayController.searchResultsTableView reloadData];
person Dafda    schedule 07.08.2013
comment
я вручную добавил данные в массив searchResults, а затем перезагрузил tableView. я проверил в режиме отладки, что searchResults содержит данные - person Shuaib; 07.08.2013