web-dev-qa-db-ja.com

NSInvalidArgumentException-受信者には識別子を持つセグエがありません

私は何時間もすべてを試してきましたが、何もうまくいきませんでした。 1つのtableViewControllerから別のtableViewControllerまで、2つのView Controllerを分離しようとしています。セグエは、tableviewcellではなく、トップレベルビューに接続されています。 Xcodeで設定された識別子は、コードで使用されているものと同じです(コピーして貼り付けます)。昨夜はうまくいきましたが、今はクラッシュせずにセグエを取得することはできません。

セグエが呼び出されるメソッドは次のとおりです

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

    self.photoList = [FlickrFetcher photosInPlace:[self.topPlacesList objectAtIndex:indexPath.row] maxResults:50];
    NSLog(@"photolist %@", self.photoList);

    NSLog(@"here");

    [self performSegueWithIdentifier:@"segue1" sender:self];
    NSLog(@"here");
}


-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if([segue.identifier isEqualToString:@"segue1"])
    {
        PhotosTableViewController *photosTVC = segue.destinationViewController;
        photosTVC.photoList = self.photoList;
    }
}

ここにエラーレポートがあります

2012-08-08 15:28:39.093 Top Places [512:f803]*キャッチされない例外 'NSInvalidArgumentException'によるアプリの終了、理由: 'Receiver(PlacesTableViewController:0x6887ff0)にはセグエがありません識別子 'segue1' *ファーストスローコールスタック:(0x13c0052 0x1551d0a 0xde24b 0x3efd 0xa771d 0xa7952 0x92f86d 0x1394966 0x1394407 0x12f77c0 0x12f6x0x12a9bx0x12a99bx0x12a9979e

これはストーリーボードのスクリーンショットですhttp://s14.postimage.org/66wf13q4h/Screen_Shot_2012_08_08_at_3_22_10_PM.png

31
James Traimory

それを私が直した! 1. Xcodeで適切なストーリーボードが選択されていることを確認します(ストーリーボードの名前を変更する場合は、プロジェクトの概要で変更します)。その後、シミュレーターでアプリを削除して再起動します

3
James Traimory

Xcodeの[製品]メニューで[クリーン]を実行し、シミュレータの内容と設定をリセットすることで修正できました。

50
pickwick

同じ問題がありました。私のイニシャライザー- (id)initWithCoder:(NSCoder *)aDecoderでやっていたself = [super init];行うべき時self = [super initWithCoder:aDecoder];。これを修正すると、すべてが期待どおりに機能しました。

6
Jason Leach

私は同じ問題を抱えており、何時間も苦労しました。 Stackmonsterの答えは私の問題を解決しました(ストーリーボードの名前を変更しました)が、なぜ問題を解決したのか理解できませんでした。

ストーリーボードのアイテムを変更した(ラベルを追加したり、背景色を変更した)とき、シミュレータに反映されないことがわかりました。プロジェクトナビゲーターでストーリーボードの名前を変更し、info.plist(サポートファイル内)とラベルが表示され、背景色が適用され、セグエが機能しました。

ストーリーボードの変更が有効にならない理由はわかりませんが、見つけるのに膨大な時間がかかりました。多くの開発者が同じ問題を抱えていることをブログで見ました。

4

Interface Builderでは、セグエ識別子をView Controllerに接続されているセグエであるsegue1に設定する必要があります。

0
deleted_user

新しいVC別のView Controllerのサブクラスとして作成したのと同じ問題がありました。UIViewControllerまたはUITableViewControllerのサブクラスである必要があります。UIKITがインポートされているかどうかヘッダーファイルを確認します.

0

巻き戻しセグエでこの問題がありました。最後に、ストーリーボードのView Controllerを交換したときに識別子を失ったことに気付きました。ドキュメントのアウトライン(ストーリーボードのサイドバー)にあるアンワインドセグエをクリックして再度追加し、属性インスペクターにその識別子を追加します。

他に何も機能しない場合は、セグエの巻き戻しに関して少なくともリースします。

[self dismissViewControllerAnimated:YES completion:nil];
0
inorganik

リストされたすべてを試してみましたが、運がありませんでした。うまくいったのは、新しいビューに新しいセグエを作成し、それを使用して実行し、古いビューに戻ってセグエを作成することでした。

0
Elijah Murray