Xcode 4.5を使用してストーリーボードを編集するときに、新しい終了アイコンがどのように使用されるかを知っている人はいますか?


100

終了アイコンを右クリックすると、空のウィンドウが表示されます。Ctrlキーを押しながら、IB要素または対応するソースファイルへの接続をドラッグすることはできません。ドキュメントは愛を与えません。nibファイルには表示されず、ストーリーボードにのみ表示されます。私の推測では、それは推測することの当然の帰結であるが、それをバックアップするための新しい方法は見当たらない。誰でも?



回答:


104

WWDCビデオ「Session 407-Adopting Storyboards in your App」には多くの情報があります。

セグエでリンクされた2つのView Controllerがあるとします。最初のビューコントローラに次の終了アクションを実装します。

- (IBAction)done:(UIStoryboardSegue *)segue {
    NSLog(@"Popping back to this view controller!");
    // reset UI elements etc here
}

次に、2番目のビューコントローラーのストーリーボードシーンで、Ctrlキーを押しながら、ボタンなどのUI要素からこのビューコントローラーの下部にある終了アイコンにドラッグします。done:あなたが最初のコントローラのコードに追加アクションがオプションとして表示されます。これで、Ctrlキーを押しながらドラッグして終了アイコンにしたボタンをアクティブにすると、最初のビューコントローラーに戻り、元の状態(つまり、テキスト入力などのUI要素はおそらくそのままの状態)を維持します。


3
実際には、ビューコントローラー(およびそのビュー)のまったく同じインスタンスに巻き戻されます。
Jon Hess

おかげで、私は「緑の出口」が何であるかを知るためだけにこれを読んでいました。それが私のための問題を解決することを知るだけでした。TabBarコントローラーとナビゲーションコントローラーで分離された2つのビューコントローラーがあり、 "Pop"が後方に戻るように機能しませんでした。これには2分かかり、すべてがうまくいきました!ありがとう!
user589642

DoneビューAに戻る前に、ビューBのクラスのボタンでアクションメソッドを呼び出すにはどうすればよいですか?
エキスパート、

あなたがWWDCのビデオを見る場合は、「アンワインドsegues」に関する部分を参照して37:15までスキップすることができます
moliveira

220

受け入れられた回答を理解するのに苦労したので、ここに詳細を示します。

以下のビューコントローラCの写真を考えると、セグエパスの任意のビューコントローラに「終了」できます。

ここに画像の説明を入力してください

ViewController Aあなたは書くことができます:

- (IBAction)done:(UIStoryboardSegue *)segue {
    // Optional place to read data from closing controller
}

あなたが書くことができるViewController B

- (IBAction)back:(UIStoryboardSegue *)segue {
    // Optional place to read data from closing controller
}

「戻る」ボタンから緑の終了オプションへのドラッグを制御するViewController C「戻る」を選択「完了」ボタンから緑の終了オプションへのドラッグを制御する ViewController C完了を選択 ここに画像の説明を入力してください

注:メソッドは他のビューコントローラー上にありますが、それらはViewController Cの出口で表示されます。コントロールのドラッグとメソッドの選択は、どのViewControllerを巻き戻すかを定義します。


2
もう1つ注意:すべての手順を実行しても、緑色の終了ボタンがアクティブにならないことがあります。この場合、ストーリーボード(またはxcodeプロジェクト)を再度開くと、期待どおりに機能します。
zxcat 2013

3
もう1つの問題は、.hファイルまたはクラス拡張子にアンワインドセグエメソッドシグネチャを配置しなかったことです。追加した後、ポップアップに巻き戻しセグエが表示されました。
スティーブモーザー2013

2
+無限大Even though the methods are on other view controllers they show up for the ViewController C's exit.
サンタクロース

15

エリックに加えて、ここでの答えは

宛先コントローラーに追加する関数は次のようになります。

@IBAction func backFromOtherController(segue: UIStoryboardSegue) {
    NSLog("I'm back from other controller!")
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.