从搜索显示控制器的表视图推送详细控制器
问题描述:
我在我的应用程序中实现了一个搜索选项,但是当我搜索某些内容时,我无法从搜索显示控制器的表视图中推送一个详细控制器。
有没有办法做到这一点?从搜索显示控制器的表视图推送详细控制器
非常感谢!
答
我们假设您在中有一个UISearchBarDelegate
方法,称为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;
}
声明了一个协议用任何你喜欢的类型“没有完成”的方法和属性,无论从SearchViewController和接收数据在任何细节处理后发回任何数据。通过控制从UISearchViewController
拖动到,在Xcode IB中添加了Segue。 NB: segue来源和目标是视图控制器本身。这样,它们可以以编程方式调用,而不是在轻敲事件上自动调用。
+0
谢谢你的回答...即使我不使用故事板,这个代码也能工作吗?我不需要从我的细节控制器取回数据,所以我不需要它的协议。 – matteodv 2011-12-30 18:54:34
请提供代码。 – Cyprian 2011-12-30 16:29:02