0

検索テーブルのセルがタップされたときに呼び出されることはありません

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"Show Detail"])
    {
        Player *player = [self.fetchedResultsController objectAtIndexPath:[self.tableView indexPathForSelectedRow]];
        [segue.destinationViewController setPlayer:player];
    }
}

これによりリストが正しくフィルタリングされますが、検索テーブルのセルがタップされたときにprepareForSegueが呼び出されることはありません。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Player Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) 
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    if (tableView == self.tableView) 
    {
        // normal table view population
        Player *player = [self.fetchedResultsController objectAtIndexPath:indexPath];
        cell.textLabel.text = [[NSString alloc] initWithFormat:@"#%@ %@ %@", player.number, player.firstName, player.lastName];
        cell.detailTextLabel.text = [[NSString alloc] initWithFormat:@"%@", player.position];
        [cell.imageView setImageWithURL:[NSURL URLWithString:player.photo] placeholderImage:[UIImage imageNamed:@"playerplaceholder.jpg"]];

    }
    else if(tableView == self.searchDisplayController.searchResultsTableView)
    {
        // search view population
        Player *player = [self.filteredFetchedResultsController objectAtIndexPath:indexPath];
        cell.textLabel.text = [[NSString alloc] initWithFormat:@"#%@ %@ %@", player.number, player.firstName, player.lastName];
        cell.detailTextLabel.text = [[NSString alloc] initWithFormat:@"%@", player.position];
        [cell.imageView setImageWithURL:[NSURL URLWithString:player.photo] placeholderImage:[UIImage imageNamed:@"playerplaceholder.jpg"]];

    }

    return cell;
}
4

1 に答える 1

1

検索に結果があるかどうかを確認する IF を配置する必要があります。このコードのように:

if ([[segue identifier]isEqualToString:@"ShowDetails"])
    {
        ShowDetailsViewController *sdvc = (ShowDetailsViewController *)[segue destinationViewController];
        NSIndexPath *indexPath = [[self tableView] indexPathForSelectedRow];

        Books *selectedBooks = nil;
        if(self.searchDisplayController.active)
            selectedBooks = (Books *)[[self searchResults]objectAtIndex:[[[[self searchDisplayController]searchResultsTableView]indexPathForSelectedRow]row]];
        else
            selectedBooks = (Books *)[[self fetchResultsController] objectAtIndexPath:indexPath];

        sdvc.currentBooks = selectedBooks;
    }
于 2012-11-29T20:44:54.377 に答える