我在我的应用程序中实现了一个搜索选项但是当我搜索某些东西时,我无法从搜索显示控制器的表视图中推送一个细节控制器。
有没有办法做到这一点?
非常感谢你!
答案 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事件上自动调用。