19

iOS 5 SDK を使用してアプリを作成しています。ストーリーボードのセグエを使用してビューをプッシュできましたが、現在のビューをポップして前のビューに戻る適切な方法が見つかりません。

私は、navigationController を使用していません (アプリには上部または下部のバーがありません)。

モーダルまたはプッシュセグエを別の方法で使用することは、新しいコントローラーをインスタンス化するための解決策になるとは思いません。

最後に反対のアニメーションとビューの削除を伴うカスタム セグエを使用する必要がありますか? それとももっと良い方法がありますか?

4

5 に答える 5

54

iOS 5 のストーリーボードは、セグエから戻るための「コードなし」の方法を提供しません。これは、自分で実装する必要があるものです。

「プッシュ」セグエ (ナビゲーション コントローラーが必要) を使用する場合は、ナビゲーション コントローラーのpopViewControllerAnimated:メソッドを使用して、最後のプッシュ セグエを元に戻します。(または、さらに元に戻す他の方法については、UINavigationControllerドキュメントを参照してください。)

「モーダル」セグエを使用する場合はdismissViewControllerAnimated:completion:、現在のView Controllerを提示したView Controllerを呼び出します(presentingViewControllerプロパティから取得できます)。


更新: iOS 6 以降では、ストーリーボードで「戻る」ためのアンワインド セグエがあります。これはまだノーコード ソリューションではありません。モーダル ビュー コントローラーからの「完了」と「キャンセル」の終了を区別するなどの処理を実行できる必要があるため、そうすべきではありません。ただし、アプリのセマンティック フローをより多くストーリーボードに入れることができます。Apple はそれらを詳細に説明したテクニカル ノートを持っており、 WWDC 2012 セッション 407 のビデオでも取り上げられています。

于 2012-06-14T15:09:37.117 に答える
26

[self dismissViewControllerAnimated:YES completion:nil];閉じたいコントローラーから呼び出してみることができます (コントローラーが押されているか、モーダルに表示されているかに関係なく)。

関連ドキュメントは次のとおりです。 UIViewController クラスリファレンス

表示側のビュー コントローラーは、表示されたビュー コントローラーを閉じる役割を果たします。提示されたView Controller自体でこのメソッドを呼び出すと、メッセージが提示元のView Controllerに自動的に転送されます。

于 2012-06-14T15:06:13.297 に答える
16

明確にするために。

押されたクラスで。以下を接続するだけで、コントローラーとビューがポップオフされます。

[self.navigationController popViewControllerAnimated:YES];
于 2012-10-08T03:57:38.517 に答える
3

ストロイボードにセグエ タイプ「カスタム」を作成します。これはボタンから行うことができます。「popSegue」という名前の新しい UIStoryboardSegue クラスを作成します popSegue.m ファイルに次を追加します。

-(void)perform{
    UIViewController *sourceViewContreoller = [self sourceViewController];
    [sourceViewContreoller.navigationController popViewControllerAnimated:YES];
}

-ストーリーボード エディターで。

-セグエを選択し、セグエ クラスを「popSegue」に変更します。

-識別子を「popSegue」に設定します

終わり!

プロジェクト全体で同じ「popSegue」クラスを使用できます。

お役に立てれば

于 2013-07-28T21:15:47.547 に答える
2

私もXcode 5を使用しています。これがその方法です。まず、他をプッシュしたビュー コード ファイルで、次のような .h ファイルに IBAction メソッドを作成します。

- (IBAction)exitToHere:(UIStoryboardPopoverSegue *)segue sender:(id)sender;

Then in the .m file add this:

- (IBAction)exitToHere:(UIStoryboardPopoverSegue *)segue sender:(id)sender {

}

このメソッドで実行する任意のクリーンアップ コードを追加できます。次にストーリーボードに移動し、プッシュされたビューを選択します。ビューには、ユーザーがタップして終了したことを知らせるボタンのようなものがあると思います。そのボタンをクリックし、キーを押したまま、出口であるビューの下の緑色のボックスにドラッグします。マウス ボタンを放しますが、キーを押したままにします。ポップアップが表示され、メソッドがリストに表示されます。その方法を選択します。ユーザーがボタンをクリックすると、ビューがポップされ、最初のメソッドに戻ります。

于 2013-10-11T07:30:23.777 に答える