web-dev-qa-db-ja.com

Xcodeのストーリーボードリファレンス、どこで使用すればよいですか?

Xcode7 betaという名前のStoryboard Referenceに1つの新しいコントロールがあります。以下はそのイメージです。

enter image description here

その説明は

外部ストーリーボードのView Controllerのプレースホルダーを提供します。このプレースホルダーに接続されたセグエは、実行時に参照されるView Controllerをインスタンス化します。

質問は

  1. どの状況でこれを使用する必要がありますか?
  2. これは、2つのストーリーボードのView Controllerをセグエ経由で接続するために使用されていますか?
  3. このアプローチは、別のストーリーボードのVCをプログラムで置き換えるために使用されていますか?
  4. 古いiOSバージョン(iOS 9より前)で動作しますか?
63
Yogesh Suthar

更新(2016年1月6日):ストーリーボード参照の使用はveryシンプルで、ストーリーボードをよりクリーンで保守可能な方法で使用するのに役立ちます。 それの良いユースケースは、例えば複数のタブを持つUITabBarControllerタブごとに1つのストーリーボードを作成し、Main.Storyboardストーリーボード参照を使用した個々のストーリーボードへのリンク。使用方法は非常に簡単です。ストーリーボード参照を作成した後は、ファイル名リンクし、個々のストーリーボード内の初期ビューコントローラーを設定する個々のストーリーボードのそれでおしまい! :)

次に続くのは、元の答えです@YogeshSutharの質問に答えました。

  1. これは、アプリで複数のストーリーボードを使用している場合に使用できます。これまでは、他のストーリーボードからView Controllerをプログラムでインスタンス化する必要がありましたが、このリファレンスを使用して、同じストーリーボードのView Controllerと同じようにストーリーボードでセグエを作成できるようになりました

  2. はい、現在のストーリーボードの1つのView Controllerを別のストーリーボードの別のView Controllerと接続し、これら2つの間にセグエを作成できます

  3. はい、これはプログラムで他のストーリーボードからView Controllerをインスタンス化するために以前使用されていたコードを置き換えるために使用できます

  4. [@AlexBassonへの更新]ストーリーボードの参照は、iOS 8OS X 10.10、およびにデプロイできます。 watchOS 1

49
nburk

ストーリーボードリファレンスの使用

まあ他の答えは私の質問に正しいです。

そして、コードを書かずにセグエ経由で別のストーリーボードからView Controllerを開くために使用されるStoryboard Referenceの使用を投稿したいと思います。 :)

手順

  1. まず、好きな名前で新しいストーリーボードを1つ作成します(NewStoryboardという名前を付けました)。
  2. Viewコントローラー(または任意のView Controller)をNewStoryboardに配置します。
  3. Storyboard IDnewVCを指定しました)を指定します。

enter image description here

  1. メインストーリーボードに戻ります。
  2. このストーリーボードでStoryboard Referenceコントロールをドラッグアンドドロップします。
  3. Storyboard Referenceコントロールを選択し、Attributes Inspectorを選択します。
  4. 新しいストーリーボードNewStoryboardを選択します。
  5. 参照IDをnewVCNewStoryboardストーリーボードで使用したもの)として提供します。
  6. ViewControllerのセグエを介してこのStoryboard Referenceを接続します。これで、コードを記述せずにセグエ経由でVCを開きます。:)

enter image description here

34
Yogesh Suthar
  1. 古いiOSバージョン(iOS 9より前)で動作しますか?

多分そうではないように見えます:/

ストーリーボードの参照には、少なくともiOS 9.0、OS X 10.11、またはwatchOS用のWatchKit 2.0を対象としたアプリが必要でした。

ソース: watchOS開発者ライブラリ:別のストーリーボードへの参照の追加

9
Ben
  1. 古いiOSバージョン(iOS 9より前)で動作しますか?

回避策は次のとおりです(Xcode 8およびiOS 8.2で検証済み):

  1. タブのView Controllerで、フレームがビュー全体を占めるコンテナビューを追加します(必要に応じてこれを行うための制約を追加します)。
  2. コンテナビューによって自動的に追加された埋め込みView Controllerを削除します。
  3. ストーリーボード参照を作成し、埋め込みビューをコンテナビューからこの参照にドラッグします。
  4. ストーリーボードをまだ作成していない場合は、ストーリーボードへの参照を割り当てます。
  5. 新しいストーリーボードでは、最初のView Controllerを選択し、属性インスペクターの[シミュレートされたメトリクス]-> [ボトムバー]で、表示するタブバー(半透明など)を選択して、タブバーの外観をシミュレートできます。

screenshot

4
Nianliang

IOS 8を搭載したXcode 7でストーリーボードの参照をテストしたところ、失敗しました。

Illegal Configuration: Storyboard References cannot be the destinations of 
relationship segues prior to iOS 9.0
3
yangt

最後にiOS Developer Libraryのドキュメント Xcode Releases がこのメモも追加されています(Currentバージョン:Xcode 7.2.1)

ストーリーボード参照は、iOS 8、OS X 10.10、およびwatchOS 1に展開できるようになりました。

それは良いニュースを意味しますが、それでもなお覚えておいてください:

ストーリーボード参照は、iOS 9.0より前の関係セグエの宛先にはできません

したがって、これらの2つの箇条書きを認識している場合は、次の手順に進んでください:)

3
E-Riddie

画面とモジュールが多すぎる大きなアプリケーションの場合、モジュールごとにストーリーボードを複数のストーリーボードに分割するのが良い便利なオプションです。複数のストーリーボードを使用しているときに、異なるストーリーボードのviewController間でセグエを接続する必要がある場合、このコントロールを使用できます。このコントロールを使用している場合、instantiateViewControllerやpushViewControllerなどのコーディングを行う必要はありません。セグエを接続し、セグエを実行するだけで、必要に応じてprepareForSegueを使用できます。

あなたのすべての質問について議論しましょう:

  1. どの状況でこれを使用する必要がありますか? -上記の答えを見つけたと思います。

  2. これは、2つのストーリーボードのView Controllerをセグエ経由で接続するために使用されていますか? - [〜#〜]はい[〜#〜]

  3. このアプローチは、別のストーリーボードのVCをプログラムで置き換えるために使用されますか?-このcontrol

  4. 古いiOSバージョン(iOS 9より前)で動作しますか? -うまくいくかもしれませんが、試していません

2
Nirav Gadhiya