2012-03-07 12 views
7

私は現在StoryboardでXcode 4.3にビルド中のiPhoneアプリを持っています。私はUIWebViewを含むビューコントローラに2つの(2)のシーケンスを持つ "ルート"ビューコントローラを持っています。私はsegueを識別できるようにしたい(両方のsegueに一意の識別子を既に設定している)ので、 "root"ビューコントローラでsegueがアクティブ化されたUIWebViewに正しいコンテンツを "プッシュ"することができます。2つのセグを同じView Controllerに渡す方法は?

"prepareForSegue"メソッドを使用する必要があると思いますが、どこに行くのかはわかりません。同じView Controllerに向かう2つのセグを扱う方法はどこで知ることができますか? (私はそれをgoogle'dし、私の状況には何も適切ではないと思った)。

-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    if ([segue.identifier isEqualToString:@"helpSegue"]) { 
     NSLog(@"helpSegue"); 
    } 
    else if ([segue.identifier isEqualToString:@"reportSegue"]) { 
     NSLog(@"reportSegue"); 
    } 
} 

答えて

3

あなたは-prepareForSegue:sender:を呼び出すことはありません、あなたはあなたのビューコントローラでそれを実装します:ここで

は、私が使用しているコードです。その方法のそれのオーバーライドでは、あなたは(セグエがパラメータとして渡される)セグエの identifierプロパティをチェックすることができます。

if ([segue.identifier isEqualToString:@"Segue Numero Uno"]) { 
    // do something here 
} 

トランジションの原因となっているセグエに応じて何らかのアクションを取ることができますこと。ストーリーボードエディタで、各セグの識別子を設定できます。

更新:あなたのコメントにあなたが提供したコード(あなたの質問に追加したもの)に基づいて、あなたは今すぐ正しい考えを持っています。この時点で、それはちょうど良い古き良きデバッグの問題です。チェックするためにいくつかの点:

  • は、ストーリーボードのビューコントローラこの-prepareForSegue:sender:を実装するクラスのインスタンスとして設定(質問リードでseguesには、すなわち、1)ですか?ストーリーボードでコントローラのタイプを確認します。

  • 正確にはのストリングを、ストーリーボードのセグに設定した識別子と一致させますか?大文字、スペル、句読点、空白はすべてカウントされます。

  • -prepareForSegue:sender:メソッドが呼び出されていますか?そこにブレークポイントを置き、デバッグしてください。それが呼び出されている場合、渡されたsegueの識別子は何ですか?それが呼び出されていない場合は、ストーリーボード内のView Controllerに適切なクラスがありません。

+0

ありがとう、ありがとう、ありがとう!それはちょうど私が必要としたものです... – SpokaneDude

+0

おっと...申し訳ありませんが、 "seque.identifier.isEqualToStringメソッドはありません...私は - (void)[prepareForSegue ViewController.m、プロジェクトの唯一のコントローラです私が間違っていましたか? – SpokaneDude

+0

'-isEqualToString:'はNSStringのメソッド(プロパティではありません)で、UIStoryboardSegueの 'identifier'プロパティはNSString *です。 'BOOL isEqual = [segue.identifier isEqualToString:@" foo "];'ドット構文を使用してパラメータを取らないメソッドを呼び出すことは可能ですが(実際はプロパティに対してのみ使用する必要があります)、 '-isEqualToString:' *はパラメータを取るので、ドット構文は完全に出力されます。 – Caleb

関連する問題