3

A、B、C (およびそれ以上) の 3 つのビューを持つストーリーボードがあります。ビュー B から、ユーザーは自動的に作成された左ボタン バー アイテムをタップすることで、ビュー A に戻ることができます。A のナビゲーション項目の [戻るボタン] プロパティを設定して、このラベルを「キャンセル」に変更しました。

C にも同じ [キャンセル] ボタンが必要ですが、ビュー B に戻るのは意味がありません。むしろ、A に戻る必要があります。プログラムでこれを行う方法は知っていますが、C の [キャンセル] ボタンがタップされたときにトリガーされるように、コードをどこに配置すればよいですか?

4

5 に答える 5

3

戻るボタンの機能をオーバーライドすることはできないと思います。そのような場合に私が行うことは、左側のバー項目を作成し、その機能でユーザーを送信するナビゲーション コントローラー ビューを決定することです。

私は次を使用してそれを行います:

[self.navigationController viewControllers] objectAtIndex:1];

インデックス 1 は、ルート viewController の後の最初のビューになります。A が rootView の場合、以下も使用できます。

[self.navigationController popToRootViewControllerAnimated:YES];
于 2012-04-17T18:13:20.827 に答える
1

Cを押す代わりに、セグエで置換オプションを使用して、これが自動的に行われるようにします。

于 2012-04-17T16:10:10.613 に答える
1

B または C からのアクションをキャンセルして A に戻りたい場合は、View Controller をモーダルに表示する方が理にかなっています。

iOS ヒューマン インターフェイス ガイドラインから:

通常、モーダル ビューには、タスクを完了してビューを閉じるボタンと、ユーザーがタップしてタスクを中止できる [キャンセル] ボタンが表示されます。

アプリケーションの主要な機能に関連する自己完結型のタスクを実行する機能を提供する必要がある場合は、モーダル ビューを使用します。モーダル ビューは、常にメイン アプリケーションのユーザー インターフェイスに属さない UI 要素を必要とする複数ステップのサブタスクに特に適しています。

于 2012-04-17T19:24:28.010 に答える