1
- (void)viewDidLoad {
    [super viewDidLoad];

    searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, 160, 44)];
    searchDisplayController = [[UISearchDisplayController alloc] initWithSearchBar:searchBar contentsController:self];

    searchDisplayController.delegate = self;
    searchDisplayController.searchResultsDataSource = self;

    self.tableView.tableHeaderView = searchBar;

    [searchDisplayController setSearchResultsDataSource: self];
    [searchDisplayController setSearchResultsDelegate: self];![enter image description here][2]


    // Do any additional setup after loading the view, typically from a nib.
    self.navigationItem.leftBarButtonItem = self.editButtonItem;

    UIBarButtonItem *addButton = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(insertNewObject:)] autorelease];
    self.navigationItem.rightBarButtonItem = addButton;

    // inizializziamo l'oggetto Data
    _objects = [[Data alloc] init];

    filteredlist=[[NSMutableArray alloc]initWithArray:_objects.lista ];
}

この方法では、詳細ビューを開くために追加しました

 [searchDisplayController setSearchResultsDataSource: self];
 [searchDisplayController setSearchResultsDelegate: self];

唯一の問題は、そのセルのビューが開くことです。代わりに、最初にロードされたリストでその名前に関連付けられた詳細ビューを開く必要があります。

問題は、検索を行うときに対応する詳細ビューを開くことです

検索を行うときは、名前をクリックしたときに詳細ビューを開く必要があります。

4

2 に答える 2

1

ここで何が問題になっているのか100%わかりませんが、デリゲートセレクターでtableView、検索結果のテーブルビューと最初のテーブルビューを区別するためのパラメーターを確認してください。例えば:

[...]
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    if (tableView == self.tableView) {
        // ...do your tableView stuff
    } else if (tableView == searchDisplayController.searchResultsTableView) {
        id someSearchResultObject = [_filteredlist objectAtIndex:indexPath.row];
        SomeDetailViewController *vc = [[SomeDetailViewController alloc] initWithSearchResult:someSearchResultObject];
        [self.navigationController pushViewController:vc animated:YES];
        [vc release];
    }
}
[...]
于 2013-01-27T11:31:12.260 に答える
0

トムの答えを更新します:

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
        if (tableView == self.tableView) {
            // ...do your tableView stuff
        } else if (tableView == searchDisplayController.searchResultsTableView) {
            DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"detailViewController" bundle:nil];
[self.navigationController pushViewController:detailViewController animated:YES];
        }
    }
于 2013-01-27T14:09:23.393 に答える