Xcode 4.5ストーリーボード「終了」


102

Xcode 4.5 for iOS6のサポートをインストールしました。ストーリーボードに「Exit」という新しいアイコンが表示され、「First Responder」などとともにビューコントローラーの下に表示されます。「Exit」というラベルの付いた小さな緑色のアイコンが表示されます。

私はそれに何かを見つけることができず、それがどのように使用されるかを考え出すことができません。

誰もがそれについて何か知っています、それがどのように機能するのか、それは何のためですか?


1
同様の質問で私はこの回答を投稿しました: stackoverflow.com/questions/12569316/… これは、終了(巻き戻し)機能の使用方法を説明するのに役立ちます
Eric

回答:


72

これを「巻き戻しセグエ」といいます。残念ながら、これまでのところ、XCode 4.5の新機能リストでの簡単な言及を除いて、これに関するドキュメントはありません。

巻き戻しセグエは、ストーリーボードのシーンの既存のインスタンスへの移行を可能にすることができます

良いニュースは、WWDC 2012からこれらの生き物を説明するセッションがあることです(とりわけ)。

デベロッパーアカウントの詳細を使用してAppleのiOSデベロッパーセンターにログインし、WWDC 2012の動画ページに移動して、「アプリでストーリーボードを採用する」を見るだけです(上から5番目です)。 。


更新:これ はAppleのドキュメントからの主題に関するいくつかの詳細です

シーケンスを巻き戻すためのExitという名前のプレースホルダーオブジェクト。デフォルトでは、ユーザーが子シーンを閉じると、そのシーンのビューコントローラーは親シーン、つまり最初に子シーンに遷移したシーンに巻き戻されます(または戻ります)。ただし、Exitオブジェクトを使用すると、ビューコントローラーを任意のシーンに巻き戻すことができます。

(iOS6 docset> General> Getting Startedから)

そして、これを実装する方法の良い例です


別のアップデート:

これは、このトピックに関するAppleからのテクニカルノートです。


3
じゃあ、どうやって使うの?ビューコントローラの下部にある出口オブジェクトからコントロールクリックを試みましたが、何にもリンクしていません。
シム

4
基本的に、アンワインドセグエのメソッドを定義し、要素から、exit呼び出すメソッドを選択するボタンに接続する必要があります。あなたはここで例を見つけることができます(私は私の答えも更新して例を含めました)
Alladinian

1
-1:たくさんの単語、ほとんど役に立たない情報。この上に読んで、自分のアプリでそれを利用した後、私はうまくいけば、より便利である。この答えを書いた:stackoverflow.com/a/25829835/901641
ArtOfWarfare

1
これが、存在しないAppleのドキュメントが大好きな理由です。男、誰かが解雇されるべきだ。
ダック

@SpaceDogたぶんそれが起こったのかもしれません、それらはすべて解雇され、誰もドキュメントを書く人が残っていません:/ WWDCビデオが大好きです-2012は明らかにAppleがピークに達した年です。
チューリングテスト済み

10

ストーリーボードに一連のビューがあるとします。

A -> ... -> Z

Zユーザーがに戻るためのボタンをビューに配置したいとしますA

したがって、実行する必要があるのは、ずっとバックしたいビューに、この場合Aはとしてマークされ、IBActionタイプの単一のパラメーターを受け取るインスタンスメソッドを指定することですUIStoryboardSegue *。メソッドと変数の名前は関係ありません。実装内で何をしてもかまいません。次に例を示します。

OBJ-C:
においてAのインタフェース(不Z'S):

- (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。これは、ビュー階層の上位にあるすべてのビューをスキャンし、アクションとしてIBAction1つのみを受け入れるを持ち、UIStoryboardSegue *そこから選択できるようにリストします。

うまくいけば、これは既存の回答よりも簡単で役に立ちました。私はこのリンクが特に役立つことを発見したので、私の答えを読んでもまだ曖昧な詳細がある場合、おそらくこれが役立つかもしれません(私はこの長い記事からのすべての有用な情報を短い答えに要約しようとしました): http://www.freelancemadscience.com/fmslabs_blog/2012/9/24/advanced-storyboard-techniques.html


4

終了アイコンを有効にするための要件を明確にした「ストーリーボードのアンワインドセグエ接続できません」も参照してください。View Controller階層の上位に、次のメソッドが必要です。

  1. IBActionとしてマーク

  2. UIStoryboardSegue *である1つのパラメーターを取ります

これらの両方の条件が満たされている場合は、Exitアイコンに表示され、同じビューコントローラーのボタンからコントロールをドラッグして接続できるようになります。

私は今、世界で最も単純な例をここに投稿しました:

https://github.com/mattneub/Programming-iOS-Book-Examples/tree/master/ch19p638presentedViewControllerStoryboard(2013年 7月12日修正)

これは、情報をやり取りするために以前に行わなければならなかったすべての作業(デリゲートとプロトコルを含むテンプレート内のもの)とは対照的に、表示されたビューコントローラーとの間で簡単にシーグすることがいかに簡単かを示しています。 、すべて削除できるようになりました)。


3

要件定義に役立つかもしれないわずかな微妙さを追加するだけです。これは、Xcode 4.6での実験に基づいています。Xcodeからの必要なコントロールドラッグ応答を可能にするのは、具体的かつ唯一のメソッドの宣言(!)であることがわかりました。これが私が完全な要件であることがわかったものです:

  • マーク済み IBAction
  • UIStoryboardSegue*である1つのパラメーターを取ります
  • アクションを宣言する必要があります(ただし、必ずしも実装されているわけではありません[ .M実装セクションのメソッドを意味します])。
  • .Mappdelegateクラスを除いて、任意のクラスのインターフェイス宣言に含めることができます。(コントローラー階層での位置への依存関係はありませんでした。古いファイルを追加すると、システムはUIStoryboardSegueパラメーターを持つすべてのメソッドを集約し、Exitアイコンのメニューにそれらを表示するようです)。control-ドラッグメソッドがストーリーボードエディターで操作しているシーンのクラスにある場合、メニューにはメソッドも表示されますが、コロンなしで表示され、実行時にアクションをトリガーするようには見えません。

例: -(IBAction)anymethodname:(UIStoryboardSegue *)myvariable;

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.