web-dev-qa-db-ja.com

iOS 5でSegues / Storyboardを使用して現在のビューをポップします

IOS 5 SDKを使用してアプリを作成しています。 StoryboardのSeguesを使用してビューをプッシュすることができましたが、現在のビューをポップして前のビューに戻る適切な方法が見つかりません。

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

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

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

18
Jukurrpa

解除するコントローラーから[self dismissViewControllerAnimated:YES completion:nil];を呼び出してみてください(コントローラーがプッシュされているか、モーダルに表示されているか)。

関連ドキュメントは次のとおりです。 IViewController Class Reference

提示するビューコントローラは、提示したビューコントローラを閉じる責任があります。提示されたビューコントローラー自体でこのメソッドを呼び出すと、メッセージが提示されたビューコントローラーに自動的に転送されます。

24
NSZombie

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

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

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


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

53
rickster

明確にするために。

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

[self.navigationController popViewControllerAnimated:YES];
16
John Ballinger

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

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

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

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

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

できた!

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

お役に立てれば

3
iJames

私も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 {

}

このメソッドで実行するクリーンアップコードを追加できます。次に、ストーリーボードに移動して、プッシュされたビューを選択します。私はあなたがビューにある種のボタンを持っていると思います、ユーザーが彼が終わったことを知らせるためにタップするのです。そのボタンをクリックし、キーを押したまま、ビューであるビューの下の緑色のボックスにドラッグします。マウスボタンを離しますが、キーを押し続けます。ポップアップが表示され、メソッドがリストに表示されます。その方法を選択します。ユーザーがボタンをクリックすると、ビューがポップアップし、開始メソッドに戻ります。

2
Bob