0

私はとしてを持ってUINavigationControllerUITableViewControllerますrootViewController。テーブルビューのプロトタイプセルからセグエを作成し、別のセルに接続しましたUIViewController。私のセグエの識別子は「詳細」です。テーブルビューデリゲート(呼び出されている)のtableView:didSelectRowAtIndexPath:メソッドには、次の行があります。

[self.navigationController performSegueWithIdentifier:@"Details" sender:nil];

アプリケーションを実行してセルの1つをタップすると、例外がスローされます。'Receiver (<UINavigationController: 0x71c65b0>) has no segue with identifier 'Details''

ここで何がうまくいかない可能性がありますか?

編集

着替えたら

[self.navigationController performSegueWithIdentifier:@"Details" sender:nil];

の中へ

[self performSegueWithIdentifier:@"Details" sender:nil];

次のビューがプッシュされますが、次のエラーが発生します。

2012-10-19 12:32:05.128 Numbers[44850:c07] nested push animation can result in corrupted navigation bar
2012-10-19 12:32:17.234 Numbers[44850:c07] Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted.
2012-10-19 12:32:17.236 Numbers[44850:c07] Unbalanced calls to begin/end appearance transitions for <DetailViewController: 0x74a1fb0>.

どうやら、現在のView Controllerに作業を任せるべきではありませんが、Navigation View Controllerに任せるべきです(それが目的です)。戻るボタンで戻ると、警告が警告されたように、奇妙なアニメーションになります。

4

3 に答える 3

1

推測に過ぎませんが、セグエを配線してコードでトリガーすることは可能ですか?「特別な」理由がない場合は、通常、を呼び出す必要はありませんperformSegueWithIdentifier:sender。代わりに、テーブルビューセルを目的のセグエに配線するだけです。

ただし、電話をかける場合performSegueWithIdentifierは、配線しないでください。

于 2012-10-19T12:46:00.710 に答える
1

Interface Builderを選択しUITableViewCellます。トリガーsegueされた選択をに接続しますdestinationViewController。ソースUIViewController実装prepareForSegue:関数で、destinationViewControllerすべての関連情報を渡します。電話する必要はありませんperformSegueWithIdentifier:

于 2013-07-05T17:29:41.707 に答える
0

あなたのdidselectメソッドでこれを行うだけです

[自己performSegueWithIdentifier:@ "Details" sender:nil];

他の関数でプッシュを実行していると思います。ネストされたプッシュでエラーが発生するか、ストーリーボードで次のビューに正しくリンクされているかどうかを確認してください。

于 2015-03-04T07:23:02.217 に答える