Могу ли я вставить кнопку в UISearchDisplayController? - PullRequest
4 голосов
/ 08 апреля 2011

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

Спасибо!

1 Ответ

2 голосов
/ 09 апреля 2011

Это довольно сложно. _DimmingView является приватным для searchDisplayController и выходит за пределы всех подпредставлений. То, что вы можете сделать, это прикрыть его вашим собственным представлением каждый раз, когда оно появляется ([searchString length] == 0 и DidBeginSearch)

(кадр tempView установлен для UISearchBar, помещенного в tableViewHeader таблицы)

- (void)viewDidLoad {
    tempView = [[UIView alloc] initWith...];
    // tempView setup
    ...
}

- (void)searchDisplayControllerDidBeginSearch:(UISearchDisplayController *)controller {
    [tempView setFrame:CGRectMake(0, self.searchDisplayController.searchBar.frame.size.height, 320, self.searchDisplayController.searchResultsTableView.frame.size.height)];
    [self.searchDisplayController.searchContentsController.view addSubview:tempView];
    ...
}

- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString
{
    if ([searchString length] == 0) 
         [self.searchDisplayController.searchContentsController.view addSubview:tempView];
    else 
         [tempView removeFromSuperview];
    ...
}

- (void)searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller {
    if (tempView && tempView.superview) 
        [tempView removeFromSuperview];
    ...
}

Примечания. Я попытался создать новый экземпляр в DidBeginSearch и выпустить его в DidEndSearch, и он работал только для первого вызова! Weird ...

Надеюсь, это поможет

...