0

2つのテーブルビューを含むビューがあります。このビューにはコントローラー PlayerDetailController があり、2 つのテーブルビューを制御するために、他に 2 つのコントローラーがあります。

  • tablePlayersDataSourceDelegate
  • tablePlayerNewsDataSourceDelegate

PlayerDetail ビューから newsView に Ctrl キーを押しながらドラッグして、セグエを作成しました。私のtablePlayerDataSourceDelegateには、このセグエを実行するための次のメソッドがあります。

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
   [self performSegueWithIdentifier:@"showPlayerDetailNews" sender:indexPath];
}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    NSIndexPath *indexPath = (NSIndexPath *)sender;
    PlayerNews *news = [_tableSource objectAtIndex:indexPath.row]; // ask NSFRC for the NSMO at the row in question
    if ([segue.identifier isEqualToString:@"show detail"]) {
        [segue.destinationViewController setImageURL:[NSURL URLWithString:news.image]];
        [segue.destinationViewController setNewsTitle:news.title];
        [segue.destinationViewController setNewsDescription:news.content];
        [segue.destinationViewController setNewsCopy:news.image_copyright];
        [segue.destinationViewController setNewsUrl:news.url];
        [segue.destinationViewController setNewsShortDescription:news.summary];
    }
}

しかし、テストすると、次のエラーが発生します。

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

これでエラーが発生する理由がわかりました。playerDetail ビューはクラス playerDetailController を使用しており、tablePlayerNewsDelegate クラスでテセグエを実行しようとしているためです。おそらくそれを回避する方法を知っていますか?

編集 ここに私が話していることの写真があります

したがって、playerDetailView で 2 つのテーブルビューを確認できます。一番下のテーブルビューのセルをクリックすると、次のビューに移動する必要があります。

EDIT2

これは、テーブルビューを埋めるために playerDetailController で行うことです。これをviewDidLoadに入れました。

tabelPlayerNews=[[tblPlayerNewsDatasourceDelagete alloc]init];
[tabelPlayerNews setTableSource:_newsArray];
tblNews.dataSource=tabelPlayerNews;
tblNews.delegate=tabelPlayerNews;
tabelPlayerNews.view=tabelPlayerNews.tableView;
4

1 に答える 1

0

それを理解しているかどうかはわかりませんが、一般的には....

performSegueWithIdentifier:セグエにドラッグを使用するには、ビューやその他のオブジェクトではなく、呼び出しを行うコントローラーから開始する必要があります。それがエラー メッセージが伝えていることだと思います。ストーリーボードに「showPlayerDetailNews」というセグエがあると仮定すると、それは正しいオブジェクトに属していません。

于 2012-10-20T17:37:19.400 に答える