在此先感謝。如何使用搜索欄和其他視圖控制器中的搜索顯示控制器顯示數據
我想創建一個具有名稱,圖片和數字的數組的應用程序。我已經使用相應數組中的所有數據創建了表視圖;我已經有搜索欄工作並顯示正確的搜索。我所缺少的是在另一個視圖控制器中顯示搜索欄的結果。 (我已經得到了這個與表視圖工作:我選擇一個名稱,它打開另一個視圖,然後顯示圖片和數字等),我只是錯過了同樣的事情,但當我做搜索。
這是我的代碼。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *simpleTableIdentifier = @"DreamCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}
if (tableView == self.tableView) {
cell.textLabel.text = [Names objectAtIndex:indexPath.row];
cell.imageView.image =[UIImage imageNamed:[Images objectAtIndex:indexPath.row]];
} else{
cell.textLabel.text = [searchResults objectAtIndex:indexPath.row];
}
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
if (self.searchDisplayController.isActive) {
[self performSegueWithIdentifier:@"ShowDreamsDetails" sender:self];
}
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
if ([segue.identifier isEqualToString:@"ShowDreamsDetails"]) {
NSString *object =nil;
// NSIndexPath *indexPath =nil;
if (self.searchDisplayController.isActive) {
indexPath =[[self.searchDisplayController searchResultsTableView] indexPathForSelectedRow];
object = [searchResults objectAtIndex:indexPath.row];
/* *Here is where I have the problem, If I leave it like thi,s it only shows the first row in my array; I needed to send the correct name and details to the other View Controller. */
DesciptionViewController *desViewController = segue.destinationViewController;
desViewController.PrincipalName = [Names objectAtIndex:indexPath.row ];
desViewController.PrincipalDescription = [Description objectAtIndex:indexPath.row];
desViewController.PrincipalNumber = [Numeros objectAtIndex:indexPath.row];
desViewController.Images1 = [UIImage imageNamed: [Images objectAtIndex: indexPath.row]];
} else {
DesciptionViewController *desViewController = segue.destinationViewController;
desViewController.PrincipalName = [Names objectAtIndex:indexPath.row];
desViewController.PrincipalDescription = [Description objectAtIndex:indexPath.row];
desViewController.PrincipalNumber = [Numeros objectAtIndex:indexPath.row];
desViewController.Images1 = [UIImage imageNamed: [Images objectAtIndex: indexPath.row]];
}
}
}
在此先感謝任何人,如果這是重複的問題,我很抱歉;我試圖搜索周圍,但我沒有找到任何東西。
我發佈了你要求的mackworth代碼。謝謝 –
非常感謝你MackWorth,它真的幫助我解釋你的解釋,在我用你給我的代碼嘗試它之後唯一的一件事,那就是我沒有在最後一行工作,所以我用真正的Row來嘗試它,並且它工作。 「desViewController.PrincipalDescription = [說明objectAtIndex:」row「];謝謝,我會盡量學習你所建議的主要變量,我在網上看到了一些例子,但不能很好地理解它,謝謝。 –