2011-12-30 108 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

相關問題