2011-12-30 100 views

回答

1

我们假设您在中有一个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

相关问题