Нажмите детализированный контроллер из представления таблицы контроллера поиска - PullRequest
0 голосов
/ 30 декабря 2011

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

Большое спасибо!

1 Ответ

1 голос
/ 30 декабря 2011

Предположим, у вас есть UISearchBarDelegate метод в UIViewController с именем SearchViewController . Чтобы нажать (DetailViewController*) dvc, реализуйте эти методы в SearchViewController :

#pragma mark - Search bar delegate
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
    if (searchTextMatchedSomeTarget) {
        textForDetailView = searchText;
        [self performSegueWithIdentifier:seguePushDetailView sender:self];
    }
}

#pragma mark - View lifecycle
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:seguePushDetailView]) {
        dvc = (DetailViewController *)[segue destinationViewController];
        dvc.delegate = (id)self;
        dvc.searchText = textForDetailView;
    }
}

#pragma mark - Detail view controller protocol delegate
- (void)DetailViewControllerDidFinish:(DetailViewController *)controller
{
    NSString *somethingBackFromDetailView = controller.backToSearchView;
}

UIDetailViewController объявляет протокол с методом «завершить» и свойствами любого типа, которые вам нравятся, как для получения данных из SearchViewController , так и для отправки любых данных после любого обработка деталей. Переход добавлен в Xcode IB путем перетаскивания элемента управления с UISearchViewController до UIDetailViewController. NB: источником и назначением segue являются сами контроллеры представления. Таким образом, они могут быть вызваны программно, а не автоматически при событии касания.

...