2016-08-19 29 views
0

segueを持つView Controller間を移行しようとしています。正しくナビゲートしていますが、2回実行されています。ここでSegueが2回実行される

は私のコードです:

- (IBAction)onActionNext:(id)sender { 
    if ([[nameField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]isEqualToString:@""]) { 

    }else if([[emailField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] isEqualToString:@""]){ 

    }else if([[mobileField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] isEqualToString:@""]){ 

    }else{ 
     [self performSegueWithIdentifier:@"VerifyNext" sender:sender]; 
    } 
} 


- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
    if ([[segue identifier] isEqualToString:@"VerifyNext"]) { 

     // Get destination view 
     OTPSceneViewController *vc = [segue destinationViewController]; 
     [vc setTitle:@"myapp"]; 
    } 
} 
+0

一度あなたのボタンまたはVC –

+1

にSegueconnectionが追加されていることを確認してください。コントローラーを表示するボタンが付いているようです。コントローラを表示するためにviewcontrollerをセグメットしてください。 –

+0

2つの理由があります。 1.あなたは 'actionNext'ボタンを2回タップしているかもしれません。あるいは、あなたは '[self performSegueWithIdentifier:@" VerifyNext "sender:sender];を2つの場所から呼び出しています。それをチェックして、あなたは良いことになるでしょう。プラスMike Alterが言ったこと。 – rptwsthi

答えて

4

この行にコメントした後でも、segueはまだ@mikealterとして実行されますが、segueはボタンに接続されています。あなたがそれをクリックしたときにチェックするときにチェックするかどうかチェックしてください。がハイライト表示されます。

よう

When Segue is connected to a button

またはビューコントローラ::のような

ボタン

When Segue is connected to a viewController

あなたのセグエがボタンに接続して、ということを意味最初のケースに該当した場合あなたのコードをコメントしても、次のページを開く理由です。そして、あなたがコードを(ストーリーボードからのものとコードからのものから)保持すると、2回。

編集: コードから次のページだけを呼び出す場合。 Segueを削除します。

enter image description here

+0

私は最初の場合に落ちています。だから何をすべきか?助けてください –

+0

ありがとう男。今働いています –

+0

助けて幸いです。 :-) – rptwsthi

-1

あなたが方法以下のストーリーボードセグエ使用を停止した場合:

override func shouldPerformSegueWithIdentifier(identifier: String,sender: AnyObject?) -> Bool { 
     return false 
    } 
+0

質問は客観的な-cを使用しないことです。 – fsb

0

このquestionの外観を持っている、これは確か

またはそこを修正します以下のコードを使用して別のView Controllerにナビゲートする別の方法です。

UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
UIViewController *vc = [mainStoryboard instantiateViewControllerWithIdentifier:@"viewControllerName"]; 
[self.navigationController pushViewController:vc animated:YES]; 

あなたが画像を見アイデンティティインスペクタを使用して、ビューコントローラにアイデンティティを与えることを確認してください。あなたがライン上で次のビューコントローラの使用に移動したい場合は、ストーリーボード

でセグエを追加する場合でもonActionNext方法で

[self performSegueWithIdentifier:@"VerifyNext" sender:sender]; 

を追加しない

enter image description here

0

。送信者:方法我々は 現在のView ControllerのprepareForSegueを利用する必要があります UIStoryboardSegueオブジェクトを使用して別のビューコントローラからの情報を渡すためにセグエ

の準備

しかし、両方を呼び出すと、2回呼び出されます。情報やデータを次のView Controllerに渡すか、単にそのビューをナビゲートするかどうかを確認してください。

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 

    NSLog(@"prepareForSegue: %@", segue.identifier); 
    if([segue.identifier isEqualToString:@"VerifyNext"]) 
    { 
     VerifyNextViewController *verifyNVC = segue.destinationViewController; 
     verifyNVC.name = @"Prashabt"; 
     verifyNVC.id = @"1234"; 
    } 
    else if([segue.identifier isEqualToString:@"VerSeg"]) 
    { 
     AnotherViewController *anotherVC = segue.destinationViewController; 
     anotherVC.name = @"Sharma"; 
     anotherVC.id = @"3245"; 
    } 
} 
+0

特定の状態でsegueを使いたいです。いくつかのサンプルコードを提供してください。それは大きな助けになるでしょう –

0

まず、あなたはビューコントローラにボタンでセグエ(i.example)を作成するたび、あなたはVC1とVC2との間のリンクを作成している。そして、同様にビューコントローラでそれを再接続します。

プロジェクトを実行すると、segueがあるVCから別のVCにナビゲートすることがわかります。 ...セグエを行う - -

は、これは、あなたのボタンのアクションを宣言し、に電話をかけるかのように、それはすでには、セグエを実行することを意味しそれが二回実行されます。

注:に電話する場合は、performSegueWithIdentifierはおそらくSENDER経由でデータを渡す必要があるためです。その場合、あなたはsegueを一度呼び出す必要があるので、ボタンから次のVCへのsegueを作成する代わりに(最初にsegueを削除する)、VCOriginから新しいものを作成してVCDestinationに追加します - >多くの方法がありますこれを行うにはInterface Builderからのように簡単に右クリックの上部の黄色い丸いアイコンにドラッグし、&を宛先のVCにドラッグします。 Attributes Inspectorで識別子を設定することを忘れないでください。 今、あなたのボタン〜アクションperformSegueWithIdentifierの呼び出しを行い、データを渡します。

関連する問題