Ok Tôi nghĩ rằng tôi đã nhận nó, nó có vẻ như một chút của một hack nhưng nó hoạt động vì mục đích của tôi:
Tôi đang sử dụng kịch bản: Tôi có một bộ điều khiển UITableView với UISearchBarDisplayController trực tiếp trên đầu trang của nó. Không có mã nào chỉ cần kéo và thả.
Từ đó, tôi theo hướng dẫn này để có được thanh tìm kiếm để tìm kiếm chính xác http://clingingtoideas.blogspot.com/2010/02/uitableview-how-to-part-2-search.html
Tuy nhiên prepareForSegue: sẽ chỉ cho tôi hiển thị một tế bào từ các mảng ban đầu, không phải với mảng tìm kiếm.
Vì vậy, tôi sử dụng didSelectRowAtIndexPath:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (savedSearchTerm) {
searchRowSelected = indexPath.row; //<-- the trick that worked
[self performSegueWithIdentifier:@"ShowDetail" sender:self];
}
}
searchRowSelected là một biến int mà tôi tuyên bố ở phía trên cùng của lớp.
didSelectRowAtIndexPath: biết hàng nào tôi đã chọn, nhưng PrepareForSegue thì không. Đó là lý do tại sao tôi cần biến đó.
Đây là cách tôi đã sử dụng nó trong prepareForSegue:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if ([segue.identifier isEqualToString:@"ShowDetail"]) {
dvc = [segue destinationViewController];
NSIndexPath* path = [self.tableView indexPathForSelectedRow];
int row = [path row];
if (savedSearchTerm){ //set the detailViewController with the searched data cell
myDataClass* c = [searchResults objectAtIndex:searchRowSelected];
dvc.myDataClass = c;
}else{ //set the detailViewController with the original data cell
myDataClass* c = [array objectAtIndex:row];
dvc.myDataClass = c;
}
}
}
Cũng sử dụng mã này để làm sạch savedSearchTerm
-(void) searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller{
[self setSavedSearchTerm:nil];
}
Nếu ai đã có một giải pháp tốt hơn tôi là tất cả tai :)
Nguồn
2012-02-17 19:58:13
/Bạn/bạn đã thực hiện 'preparForSeque: sender:'? Tôi đã mô tả cách triển khai đơn giản trong http://stackoverflow.com/questions/10033279/prepareforsegue-after-uisearchdisplaycontroller/19814031#19814031 – hop