102

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

私はそれについて何かを見つけることができます。それはどのように機能しますか?

4

4 に答える 4

72

これを「アンワインド セグエ」と呼びます。残念ながら、XCode 4.5 の新機能リストに次のように簡単に言及されていることを除いて、これに関するドキュメントはこれまでのところありません。

アンワインド セグエにより、ストーリーボード内のシーンの既存のインスタンスに移行できます

良いニュースは、WWDC 2012 のセッションで、これらの生物について (とりわけ) 説明していることです。

開発者アカウントの詳細を使用して Apple の iOS Dev Center にログインし、WWDC 2012 のビデオ ページに移動して、 「Adopting Storyboard in your App」を視聴することができます (上から 5 番目)。 .


更新: Appleのドキュメントから、この件に関する詳細情報を以下に示します

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

(iOS6 docset > General > Getting Started から)

また、これを実装する方法の良い例を次に示します。


別の更新:

このトピックに関するApple のテクニカル ノートを次に示します。

于 2012-09-17T14:37:19.177 に答える
4

終了アイコンを有効にするための要件を明確にする、Storyboard Unwind Segue に接続できないも参照してください。View Controller階層の上位に、次のようなメソッドが必要です。

  1. IBAction としてマーク

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

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

また、世界で最も単純な例をここに投稿しました。

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

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

于 2012-10-26T17:52:35.457 に答える
3

要件の定義に少し微妙な点を追加するだけで、役立つ場合があります。これは、Xcode 4.6 での実験に基づいています。Xcode から目的のコントロール ドラッグ応答を有効にするのは、具体的にはメソッドの宣言 (!) だけであることがわかりました。完全な要件であることがわかったのは次のとおりです。

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

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

于 2013-03-18T00:41:41.180 に答える