从搜索显示控制器的表格视图中推送细节控制器

时间:2011-12-30 16:02:42

标签: iphone search uisearchdisplaycontroller

我在我的应用程序中实现了一个搜索选项但是当我搜索某些东西时,我无法从搜索显示控制器的表视图中推送一个细节控制器。
有没有办法做到这一点?

非常感谢你!

1 个答案:

答案 0 :(得分:1)

我们假设您在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声明协议,其中包含“did finish”方法和您喜欢的任何类型的属性,以接收来自 SearchViewController 的数据并发回任何细节处理后的任何数据。通过控制从UISearchViewController拖动到UIDetailViewController,在Xcode IB中添加segue。 NB: segue源和目标是视图控制器本身。这样就可以以编程方式调用它们,而不是在tap事件上自动调用。