5

一部の人にとって、この質問はばかげているように聞こえるかもしれませんが、私は iOS アプリの設計についてチームメイトと話し合っています。それについてあなたの意見が必要です。

私が同意しない古いデザインは次のとおりです

  • ボタン「Go To B」を含むViewControllerAがあります。ボタンには、B に移動するための PUSH セグエがあります。
  • ボタン「Go To A」を含む ViewControllerB があります。ボタンには、A に移動するための PUSH セグエがあります。
  • 2 つの ViewController の間を頻繁に移動する必要があります。

ご覧のとおり、ViewController A と B の間にセグエ ループがあり、決して発生させてはならないと思います。ナビゲーションバーの「戻る」ボタンでBからAに行きたいと思います。

PUSH セグエ ループの設計はどの程度深刻ですか? 場合によっては認められる?Appleが推奨するグッドデザインはどこで見られますか? (もしあれば?)

編集: nfarshchi による「ポップ ビフォア プッシュ」ソリューションを試してみましたが、うまくいきませんでした。ストーリーボードがそれを防ぐようです 2) したがって、VC A のボタン「B に移動」から VC B への識別子が「gotoB」であるセグエを 1 つ作成し、ボタン「A に移動」から識別子が「gotoA」であるセグエを 1 つ作成します。 VC B から VC A へ。

したがって、ストーリーボードは次のようになります。

VC X ---Push---> VC A <----Push----> VC B (ViewController X が必要な理由は後で説明します) 3) VC AI では、次のようになります。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    NSLog(@"Prepage for segue go to B") ;
    if ([[segue identifier] isEqualToString:@"gotoB"] ) {
        [self.navigationController popViewControllerAnimated:NO];

    }
}

そこにViewControllerが1つしかない場合、スタックからViewControllerをポップできないため、VC Xが必要です。

今は正しいようですが、「Go to B」をクリックすると、代わりに VC X に移動しました。上記の popViewControllerAnimated: が VC A をポップしたことは明らかでした。それだけで、VC B へのセグエはもはや起動されませんでした。その結果、VC B は期待どおりにスタックにプッシュされませんでした。

したがって、nfarshchiのソリューションを実装することは不可能だと思います

4

2 に答える 2

3

それを行うことはできますが、プッシュしてUIViewController再度プッシュすると、再設計するために多くのメソッドが呼び出されることを考慮してください。それらの上をたくさん移動したい場合は、 を使用することをお勧めしますUINavigationController。この場合、それらを一度作成するだけで、それらの間を簡単に移動できます。これにより、使用するシステム リソースが少なくなります

于 2012-06-26T10:05:48.830 に答える
1

プッシュ/ポップ トランジションは、トランジションによって作成される仮想 2D 空間が現実的である場合にのみ使用してください。ユーザーが 10 回のプッシュ トランジションを続けて見ると、階層がどんどん深くなっていくように感じられ、特に実際に 2 つのビュー コントローラー間を移動している場合は特に、混乱と悪いメンタル モデルが生じる可能性があります。

戻るボタンを使用する方がより良い解決策になります。または、何が起こっているのかをユーザーに明確にする独自のカスタム遷移を作成することもできます。おそらく、フリップサイドトランジションも適切でしょう。

于 2012-06-26T10:36:11.907 に答える