11

私はこれに問題があります。私のルートView Controllerには、テキストフィールドと1つのボタンがあります。テキストフィールドに 0 を入力した場合のみ、次のビューに移動する必要があるという条件を与えています。ここまでは正常に動作しています。しかし、ここで問題が発生します。ここでは、1 つのボタンと、そのボタンの 3 番目のビュー コントローラーへのナビゲーションを指定しています。ここで私はエラーが発生しています

Terminating app due to uncaught exception 'NSGenericException', reason: 'Push segues can only be used when the source controller is managed by an instance of UINavigationController.'

画像参照: http://img12.imageshack.us/img12/8533/myp5.png

そして、私は以下のように最初のビューでボタンにアクションを与えています

- (IBAction)Submit:(id)sender {

if([tf.text isEqual:@"0"])
{

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main"   bundle:nil];

    SecondViewController *vc2 = [storyboard instantiateViewControllerWithIdentifier:@"SecondViewControllerID" ];

    [self presentViewController:vc2 animated:YES completion:NULL];

}  
}
4

7 に答える 7

5

スクリーンショットを見た後、次のいずれかを行う必要があります

  1. SecondViewControllerモーダルに表示する代わりに、既存のナビゲーション コントローラーのスタックにプッシュするOR
  2. 別のナビゲーション コントローラーに埋め込み、SamplesViewController からそのSecondViewControllerナビゲーション コントローラーをモーダルに作成して提示する必要があります。

いずれにSecondViewControllerしても、プッシュ セグエを使用する前に、ナビゲーション コントローラーに埋め込む必要があります。

于 2013-10-07T13:42:44.320 に答える
0

UINavigationControllerストーリーボードにない場合は、View Controller を a に埋め込むことをお勧めしますUINavigationController。それ以外の場合はUINavigationController、インスペクタ ペインで を選択してルート ビュー コントローラを選択し、ルートUIViewControllerとして使用する にドラッグします。スクリーンショットは次のとおりです。 ここに画像の説明を入力

于 2014-11-11T06:11:22.867 に答える
0

私も同じ問題に直面しました。私の問題は、現在のコントローラーの前にmodelセグエスタイル(むしろpush)を使用していたため、以前にナビゲーションチェーンが壊れたと思うことです。

于 2013-12-09T14:30:39.450 に答える
0

UINavigationController と宛先ビュー コントローラーの間にカスタム UIStoryboardSegue を作成することで、これを解決しました。

-(void) perform
{
    assert([self.sourceViewController isKindOfClass:[MyNavigationController class]]);
    MyNavigationController *launchController = (MyNavigationController *) self.sourceViewController;
    [launchController setViewControllers:@[self.destinationViewController] animated:YES];
}
于 2015-03-18T17:31:18.133 に答える