0

ナビゲーション コントローラーを使用する代わりに、いくつかのセグエを呼び出すプロジェクトに取り組んでいます。プロジェクトの早い段階で、モーダル セグエをセットアップし、いくつかの異なるボタンの IBAction メソッド内から呼び出しました (セグエと一緒に文字列を渡すときに、異なるボタンから同じセグエを呼び出します)。

私のストーリーボードでは、次のようになります。

IBAction がリンクされた UIButton

カスタム識別子を使用したモーダル セグエ

次に、私のコードでは、これを行います:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    NSLog(@"Vimeo Segue");
    if([segue.identifier isEqualToString:@"playVimeo"]) {
        WebViewViewController *controller = (WebViewViewController *)segue.destinationViewController;
        controller.vimeoURL = vimeoURL;
    }
}

- (IBAction)launchCreativeFuture:(id)sender {
    vimeoURL = @"72053500";
    [self performSegueWithIdentifier:@"playVimeo" sender:sender];
}

これはうまくいき、私はこれに満足しています。でも...

これを行う別の方法に出くわしましたが、なぜ両方が機能するのか、どちらが推奨されるのかについて混乱しています。

ここでは、これらの図のように、リンクされた IBAction とモーダル セグエを追加しました。

リンクされた IBAction

モーダルセグエ識別子

そして、私のコードは次のようになります。

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if([segue.identifier isEqualToString:@"pushToGraduateCourses"]) {
        NSLog(@"Grad Segue");
        UIViewController *controller = (UIViewController *)segue.destinationViewController;
    }
}


- (IBAction)launchGraduate:(id)sender {
    NSLog(@"Grad Button");
    [self performSegueWithIdentifier:@"pushToGraduateCourses" sender:sender];
}

私が知る限り、コードに関してはかなり同じです...これを行うと、次の警告が表示されることを除いて:「警告:プレゼンテーションの進行中にプレゼンテーションを試みてください!」... コンソールを見ると、"Grad Segue" が 2 回ログに記録されています... これは理にかなっていますが、最初の例では、"Vimeo Segue" は 1 回しかログに記録されていません。

私が求めているのはいくつかの質問だと思います:

a)2つの方法の違いを誰でも見つけることができますか?できないから。

b) Interface Builder からセグエを作成すると、そのボタンにリンクされている IBAction からプログラムで呼び出さなくても、ボタンから performSegueWithIdentifier が自動的に呼び出されますか?

c) どの方法が推奨されますか?

前もって感謝します、

〜ジェシー

4

1 に答える 1

2

A.はい

B. はい。ボタンからセグエを作成すると、ボタンは performSegueWithIdentifier を呼び出します。

C. 私の意見では、ストーリーボードでできるだけ多くの UI 設計を行うべきであり、コード内の何かに基づいて UI を更新する必要がある場合にのみコードに進みます。元。ユーザーがアプリの管理者である場合、標準ユーザーとは異なる設定ページにセグエする必要があります。

于 2013-08-31T23:09:54.343 に答える