Xcode 4.5 for iOS6のサポートをインストールしました。ストーリーボードに「Exit」という新しいアイコンが表示され、「First Responder」などとともにビューコントローラーの下に表示されます。「Exit」というラベルの付いた小さな緑色のアイコンが表示されます。
私はそれに何かを見つけることができず、それがどのように使用されるかを考え出すことができません。
誰もがそれについて何か知っています、それがどのように機能するのか、それは何のためですか?
Xcode 4.5 for iOS6のサポートをインストールしました。ストーリーボードに「Exit」という新しいアイコンが表示され、「First Responder」などとともにビューコントローラーの下に表示されます。「Exit」というラベルの付いた小さな緑色のアイコンが表示されます。
私はそれに何かを見つけることができず、それがどのように使用されるかを考え出すことができません。
誰もがそれについて何か知っています、それがどのように機能するのか、それは何のためですか?
回答:
これを「巻き戻しセグエ」といいます。残念ながら、これまでのところ、XCode 4.5の新機能リストでの簡単な言及を除いて、これに関するドキュメントはありません。
巻き戻しセグエは、ストーリーボードのシーンの既存のインスタンスへの移行を可能にすることができます
良いニュースは、WWDC 2012からこれらの生き物を説明するセッションがあることです(とりわけ)。
デベロッパーアカウントの詳細を使用してAppleのiOSデベロッパーセンターにログインし、WWDC 2012の動画ページに移動して、「アプリでストーリーボードを採用する」を見るだけです(上から5番目です)。 。
更新:これ はAppleのドキュメントからの主題に関するいくつかの詳細です
シーケンスを巻き戻すためのExitという名前のプレースホルダーオブジェクト。デフォルトでは、ユーザーが子シーンを閉じると、そのシーンのビューコントローラーは親シーン、つまり最初に子シーンに遷移したシーンに巻き戻されます(または戻ります)。ただし、Exitオブジェクトを使用すると、ビューコントローラーを任意のシーンに巻き戻すことができます。
(iOS6 docset> General> Getting Startedから)
そして、これを実装する方法の良い例です
別のアップデート:
これは、このトピックに関するAppleからのテクニカルノートです。
exit
呼び出すメソッドを選択するボタンに接続する必要があります。あなたはここで例を見つけることができます(私は私の答えも更新して例を含めました)
ストーリーボードに一連のビューがあるとします。
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
。これは、ビュー階層の上位にあるすべてのビューをスキャンし、アクションとしてIBAction
1つのみを受け入れるを持ち、UIStoryboardSegue *
そこから選択できるようにリストします。
うまくいけば、これは既存の回答よりも簡単で役に立ちました。私はこのリンクが特に役立つことを発見したので、私の答えを読んでもまだ曖昧な詳細がある場合、おそらくこれが役立つかもしれません(私はこの長い記事からのすべての有用な情報を短い答えに要約しようとしました): http://www.freelancemadscience.com/fmslabs_blog/2012/9/24/advanced-storyboard-techniques.html
終了アイコンを有効にするための要件を明確にした「ストーリーボードのアンワインドセグエを接続できません」も参照してください。View Controller階層の上位に、次のメソッドが必要です。
IBActionとしてマーク
UIStoryboardSegue *である1つのパラメーターを取ります
これらの両方の条件が満たされている場合は、Exitアイコンに表示され、同じビューコントローラーのボタンからコントロールをドラッグして接続できるようになります。
私は今、世界で最も単純な例をここに投稿しました:
これは、情報をやり取りするために以前に行わなければならなかったすべての作業(デリゲートとプロトコルを含むテンプレート内のもの)とは対照的に、表示されたビューコントローラーとの間で簡単にシーグすることがいかに簡単かを示しています。 、すべて削除できるようになりました)。
要件定義に役立つかもしれないわずかな微妙さを追加するだけです。これは、Xcode 4.6での実験に基づいています。Xcodeからの必要なコントロールドラッグ応答を可能にするのは、具体的かつ唯一のメソッドの宣言(!)であることがわかりました。これが私が完全な要件であることがわかったものです:
IBAction
UIStoryboardSegue
*である1つのパラメーターを取ります.M
実装セクションのメソッドを意味します])。.M
appdelegateクラスを除いて、任意のクラスのインターフェイス宣言に含めることができます。(コントローラー階層での位置への依存関係はありませんでした。古いファイルを追加すると、システムはUIStoryboardSegue
パラメーターを持つすべてのメソッドを集約し、Exitアイコンのメニューにそれらを表示するようです)。control-ドラッグメソッドがストーリーボードエディターで操作しているシーンのクラスにある場合、メニューにはメソッドも表示されますが、コロンなしで表示され、実行時にアクションをトリガーするようには見えません。例:
-(IBAction)anymethodname:(UIStoryboardSegue *)myvariable;