0

3つのUIViewControllerを使用するアプリを構築しています。ナビゲーションコントローラーを使用してナビゲートしています。First View Controller(v1)には、2つのテキストボックスと1つのボタンがあります。ボタンをクリックすると、特定の基準をチェックする機能があり、それが満たされた場合は、2番目のビューコントローラー(v2)に移動するか、3番目のビューコントローラー(v3)に移動します。コードを介してどのようにそれが可能ですか?

最後に、これらのテキストボックスの値をキャプチャして、適切なViewControllerで使用します。どうしてそれは可能ですか?

4

2 に答える 2

1

ストーリーボード内の別のシーンにプログラムで移行する場合の一般的な手順は次のとおりです。

  • ビュー コントローラ (ボタンではなく、ビュー コントローラ) 間のセグエを定義します。

  • そのセグエにストーリーボード識別子を与えます。

  • IBAction検証を行うボタンの を作成し、成功した場合は

    [self performSegueWithIdentifier:@"myidentifier"];
    

スタック オーバーフローに関するこの回答を参照してください。ここでは、このプロセスを詳細に説明しています。あなたの場合、データを検証しているように聞こえ、ある一連の条件で1つのセグエを実行し、別の一連の条件で別のセグエを実行する可能性があります。したがって、これら 2 つのセグエに一意の識別子を与えるだけで、コード内で必要な方を実行できますIBAction

次のシーンにデータを渡すという点では、別のメソッド でこれを行います。このメソッドはprepareForSegue、宛先コントローラーが作成された後、それが提示される前に iOS によって呼び出されます。ここで、宛先コントローラーにパラメーターを渡すことができます。たとえば、個人の名と姓を取得し、それを宛先コントローラーに渡したいと仮定しています。これには、名と姓のプロパティがあります。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"myidentifier"])
    {
        MyDestinationController *controller = segue.destinationViewController;
        controller.firstName = self.labelFirstName.text;
        controller.lastName = self.labelLastName.text;
    }
}
于 2012-12-23T04:02:47.813 に答える
1

iOS 6.0 以降、コントローラーに実装でき-shouldPerformSegueWithIdentifier:sender:ます。iOS 5 でしなければならなかったことよりもはるかに簡単です。

于 2012-12-23T04:12:45.910 に答える