IOS6をサポートするXcode 4.5をインストールしたばかりです。ストーリーボードに「終了」という新しいアイコンがあり、View Controllerの下に「First Responder」などとともに表示されます。「Exit」というラベルの小さな緑色のアイコンがあります。
私はその上で何かを見つけることも、それがどのように使用されるかも解きません。
誰でもそれについて、それがどのように機能するのか、何のために知っていますか?
これは「Unwind Segue」と呼ばれます。残念ながら、XCode 4.5の新機能のリストに記載されている短い記述を除いて、これに関するドキュメントはこれまでのところありません。
セグエの巻き戻しにより、ストーリーボードの既存のシーンのインスタンスに移行できます
良いニュースは、WWDC 2012から、これらのクリーチャーを説明するセッションがあることです(特に)。
開発者アカウントの詳細を使用してAppleのiOS Dev Centerにログインし、 WWDC 2012ビデオページ に移動して、「アプリでストーリーボードを採用する」(上から5番目)を見ることができます。セグエは時間37:20に始まります。
更新:ここに、Appleのドキュメントの主題に関する詳細情報があります
シーケンスを巻き戻すためのExitという名前のプレースホルダーオブジェクト。デフォルトでは、ユーザーが子シーンを閉じると、そのシーンのView Controllerは親シーン、つまり元々子シーンに遷移したシーンに巻き戻されます(または戻ります)。ただし、Exitオブジェクトを使用すると、View Controllerで任意のシーンに巻き戻すことができます。
(iOS6 docsetから> General> Getting Started)
そして、これを実装する方法の良い例です
別の更新:
これはAppleのテクニカルノートです このトピックに関するものです。
ストーリーボードに一連のビューがあると想像してください。
A -> ... -> Z
ビューにボタンZ
を配置すると、ユーザーはA
に戻ることができます。
したがって、必要なのは、最後まで戻すビュー、この場合はA
としてマークされ、IBAction
としてマークされ、タイプUIStoryboardSegue *
の単一パラメーター。メソッドと変数の名前は関係ありません。実装内で何をするかは重要ではありません。以下に例を示します。
Obj-C:A
のインターフェイス(Z
のインターフェイスではありません):
- (IBAction)cancelSignup:(UIStoryboardSegue *)unwindSegue;
A
の実装(Z
ではなく):
- (IBAction)cancelSignup:(UIStoryboardSegue *)unwindSegue {
// Only "implemented" to satisfy a respondsToSelector: search.
// You can actually implement more stuff here, if you want, IE, if
// you need to reach out to a server to mention that this screen was
// returned to from a later screen.
}
スイフト:A
のソース(Z
のソースではありません):
@IBAction func cancelSignup(unwindSegue: UIStoryboardSegue) {
// Only "implemented" to satisfy a respondsToSelector: search.
// You can actually implement more stuff here, if you want, IE, if
// you need to reach out to a server to mention that this screen was
// returned to from a later screen.
}
ストーリーボード内で、 control Z
(IE、キャンセルボタン)上の要素からZ
のExit
にドラッグします。アクションとして単一のUIStoryboardSegue *
のみを受け入れるIBAction
を持つビュー階層の上位にあるすべてのビューをスキャンし、リストから選択します。
うまくいけば、これが既存の答えよりも簡単で便利なものになったと思います。私はこのリンクが特に有用であることがわかったので、私の答えを読んだ後でもまだ曖昧な詳細がある場合は、おそらくこれがあなたを助けることができます(私はこの長い記事のすべての有用な情報を短い答えに凝縮しようとしました): http://www.freelancemadscience.com/fmslabs_blog/2012/9/24/advanced-storyboard-techniques.html
ストーリーボードのアンワインドセグエを接続できません も参照してください。これにより、終了アイコンを有効にするための要件が明確になります。 View Controller階層の上位にあるメソッドが必要です:
IBActionとしてマークされています
UIStoryboardSegue *であるパラメーターを1つ受け取ります
これらの条件が両方とも満たされると、終了アイコンが表示され、同じView Controllerのボタンからコントロールをドラッグして接続することができます。
また、世界で最も単純な例をここに投稿しました。
https://github.com/mattneub/Programming-iOS-Book-Examples/tree/master/ch19p638presentedViewControllerStoryboard (2013年7月12日修正)
これは、前に行う必要があったすべての作業とは対照的に、提示されたView Controllerにから戻ってを分離することがいかに簡単かを示しています情報をやり取りします(テンプレート内のデリゲートとプロトコルを持つもの。すべて削除できるようになりました)。
要件定義にわずかな微妙さを追加するだけで役立ちます。これは、Xcode 4.6での実験に基づいています。 Xcodeから目的のコントロールドラッグ応答を可能にするのは、メソッドの宣言(!)だけであることがわかりました。完全な要件であることがわかりました。
IBAction
としてマークされていますUIStoryboardSegue
*であるパラメーターを1つ受け取ります.M
_実装セクションのメソッドを意味する])。.M
_のインターフェイスセクションでも、任意のクラスのインターフェイス宣言に含めることができます。 (コントローラー階層内の位置に依存関係はありませんでした。古いファイルを追加すると、システムはUIStoryboardSegue
パラメーターを持つすべてのメソッドを集約し、終了アイコンのメニューに表示するようです。)メソッドがストーリーボードエディターで操作しているシーンのクラスにある場合は、コントロールドラッグメニューにもメソッドが表示されますが、コロンなしで表示され、実行時にアクションをトリガーしないようです。例:-(IBAction)anymethodname:(UIStoryboardSegue *)myvariable;