私は何時間もすべてを試してきましたが、何もうまくいきませんでした。 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
それを私が直した! 1. Xcodeで適切なストーリーボードが選択されていることを確認します(ストーリーボードの名前を変更する場合は、プロジェクトの概要で変更します)。その後、シミュレーターでアプリを削除して再起動します
Xcodeの[製品]メニューで[クリーン]を実行し、シミュレータの内容と設定をリセットすることで修正できました。
同じ問題がありました。私のイニシャライザー- (id)initWithCoder:(NSCoder *)aDecoder
でやっていたself = [super init];
行うべき時self = [super initWithCoder:aDecoder];
。これを修正すると、すべてが期待どおりに機能しました。
私は同じ問題を抱えており、何時間も苦労しました。 Stackmonsterの答えは私の問題を解決しました(ストーリーボードの名前を変更しました)が、なぜ問題を解決したのか理解できませんでした。
ストーリーボードのアイテムを変更した(ラベルを追加したり、背景色を変更した)とき、シミュレータに反映されないことがわかりました。プロジェクトナビゲーターでストーリーボードの名前を変更し、info.plist
(サポートファイル内)とラベルが表示され、背景色が適用され、セグエが機能しました。
ストーリーボードの変更が有効にならない理由はわかりませんが、見つけるのに膨大な時間がかかりました。多くの開発者が同じ問題を抱えていることをブログで見ました。
Interface Builderでは、セグエ識別子をView Controllerに接続されているセグエであるsegue1
に設定する必要があります。
新しいVC別のView Controllerのサブクラスとして作成したのと同じ問題がありました。UIViewControllerまたはUITableViewControllerのサブクラスである必要があります。UIKITがインポートされているかどうかヘッダーファイルを確認します.
巻き戻しセグエでこの問題がありました。最後に、ストーリーボードのView Controllerを交換したときに識別子を失ったことに気付きました。ドキュメントのアウトライン(ストーリーボードのサイドバー)にあるアンワインドセグエをクリックして再度追加し、属性インスペクターにその識別子を追加します。
他に何も機能しない場合は、セグエの巻き戻しに関して少なくともリースします。
[self dismissViewControllerAnimated:YES completion:nil];
リストされたすべてを試してみましたが、運がありませんでした。うまくいったのは、新しいビューに新しいセグエを作成し、それを使用して実行し、古いビューに戻ってセグエを作成することでした。