Белые линии на [searchDisplayController setActive] и "Нет результатов" при начале ввода - PullRequest
2 голосов
/ 28 октября 2009

С помощью этого:

- (void)viewDidLoad {
 [super viewDidLoad];
 [self.searchDisplayController setActive:YES];
 [self.searchDisplayController.searchBar becomeFirstResponder];
}

Я хотел показать клавиатуру в поиске при загрузке представления. Это работает просто отлично, но выглядит довольно некрасиво (почему белые линии там?):

таблица поиска с белыми линиями http://img42.yfrog.com/img42/7503/latest1.png

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

таблица поиска без белых линий http://img3.yfrog.com/img3/6176/testpn.png

Как мне это исправить?

И у меня есть другая проблема. Когда я начинаю набирать что-то, оно сразу показывает «Нет результатов» даже до того, как кто-то нажимает кнопку «Поиск», как я могу изменить это поведение?

таблица поиска с 'ничего не найдено' http://img245.yfrog.com/img245/4366/bildschirmfoto20091014ui.png

Ответы [ 2 ]

1 голос
/ 22 ноября 2009

Проблема с "нет результатов" по-прежнему проблема. Я нашел на форуме поддержки Apple, что он не реализован таким образом. Поэтому я искал обходные пути. Первое, что вы хотите сделать, это:

- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString {
    if([searchString length] < 1) [items removeAllObjects];
    if ([items count] < 1) {
        [controller.searchResultsTableView setBackgroundColor:[UIColor colorWithWhite:0.0 alpha:0.8]];
        [controller.searchResultsTableView setRowHeight:800];       
    }
    return YES;
}

Таким образом, вы получаете только одну большую ячейку стола, которая выглядит серой и полупрозрачной. Когда вы перезагрузили searchTableView, вы хотите изменить это обратно:

- (void)gotDataReload {
    [self.searchDisplayController.searchResultsTableView reloadData];
    [self.searchDisplayController.searchResultsTableView setBackgroundColor:[UIColor whiteColor]];
    [self.searchDisplayController.searchResultsTableView setRowHeight:44];
}

Надеюсь, что это поможет следующему, у кого есть эти проблемы.

1 голос
/ 22 ноября 2009

Первая проблема, похоже, как-то связана со временем. Я получил это работать с этим:

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    [self performSelector:@selector(toTheSearchbar) withObject:self afterDelay:0];
}

- (void)toTheSearchbar {
    [self.searchDisplayController setActive:YES];
    [self.searchDisplayController.searchBar becomeFirstResponder];
}

Даже задержка 0 работает нормально, без нее я получаю белые линии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...