0

これが私の状況です。私は2つのテーブルビューを持っています。1 つのビューで 2 つのテーブルビューを操作する方法を検索した後、2 つの追加のコントローラーを作成するソリューションにたどり着きました。つまり、tbl1DatasourceDelegate と tbl2DatasourceDelegate です。セルをプッシュすると、別のviewControllerに移動するはずです。tbl1DatasourceDelegate にこのコードがあります。

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    PlayerNews *news = [_tableSource objectAtIndex:indexPath.row];
    PlayerDetailController *detail =[[PlayerDetailController alloc]init];

    [detail setNewsItem:news];
}

したがって、Cell を選択すると、playerNewsObject を作成し、2 つのテーブルビューを含むコントローラーに送り返します。2 つのテーブルビューを含むコントローラーに戻ったとき。(私がセグエしているコントローラー) 関数setNewsItemを実行しますここにコードが表示されます。

 -(void)setNewsItem:(PlayerNews *)newsItem{
        if(![_newsItem isEqual:newsItem]){
            _newsItem = newsItem;
        }
       NSLog(@"Player detail controller newsItem object: %@", _newsItem);
       [self performSegueWithIdentifier:@"PlayerDetailNews" sender:tblNews];

    }

テーブルビューにプッシュした newsItem がログに表示されるため、このコードが実行されます。しかし、それに続くことはありません。次のprepareForSegueを使用しています。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    NSLog(@"comes in this segue");
    // ask NSFRC for the NSMO at the row in question
    if ([segue.identifier isEqualToString:@"PlayerDetailNews"]) {
        [segue.destinationViewController setImageURL:[NSURL URLWithString:_newsItem.image]];
        [segue.destinationViewController setNewsTitle:_newsItem.title];
        [segue.destinationViewController setNewsDescription:_newsItem.content];
        [segue.destinationViewController setNewsCopy:_newsItem.image_copyright];
        [segue.destinationViewController setNewsUrl:_newsItem.url];
        [segue.destinationViewController setNewsShortDescription:_newsItem.summary];
    }
}

ログを出力しないため、このメソッドには含まれません。次のエラーでクラッシュします。

** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Receiver (<tblPlayerNewsDatasourceDelagete: 0x1e5e44c0>) has no segue with identifier 'showPlayerDetailNews''

誰でも私を助けることができますか?

ありがとうございました

4

1 に答える 1

0

セグエを起動できない 2 つの理由:

1) セグエ識別子のスペルミス。ストーリーボードとコードで使用されている識別子を再確認してください。補足: 識別子は、ストーリーボード内で一意である必要はなく、ビュー コントローラーごとに異なります。Bへのセグエを持つビューコントローラーAとBへのセグエを持つビューコントローラーCがあるとします。これらは同じ識別子を持つことが許可されています。

2) 起動しようとしている UIViewController に接続されていないセグエを起動しようとしています。たとえば、ビューコントローラーABに接続するセグエ 'segueA' があります。この場合、使用できる場所[self performSegueWithIdentifier:@"segueA" sender:nil]Aだけです。

于 2012-10-29T19:37:54.887 に答える