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;