一部の人にとって、この質問はばかげているように聞こえるかもしれませんが、私は 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のソリューションを実装することは不可能だと思います