if ()
セグエの宛先View Controllerが詳細分割またはマスター分割に表示される かどうかを確認するステートメントをどのように表現できるか教えてもらえますか?
メソッドif()
内にステートメントを入れたい。prepareForSegue:sender:
編集
(現時点で) この質問に関連するすべての詳細ビューはプロトコルに準拠しており、現在、次を使用して宛先コントローラーでイントロスペクションを実行しています。
if ([segue.destinationViewController conformsToProtocol:@protocol(myProtocol)])...
私が望むなら、これはうまくいかないことがわかります:
- splitView の Master または Detail のいずれかで同じクラスを時々、同時に表示できるようにするには...
- ビューが詳細分割で表示される場合にのみ、if() ステートメントが true になるようにします。
のようなものも役に立たsegue.destinationViewController.navigationController == ...
ないようです。
セグエをセットアップするときに「マスター スプリット」または「ディテール スプリット」を設定する必要があるため、その情報にあまり迂回せずにアクセスする方法があることを期待していました。
2番目の編集:
イントロスペクションを使用してこれを設定する方法は「機能」します。あまり「オブジェクト指向」とは思えません。この情報についてView Controllerにクエリを実行する必要はまったくないと思います。VCがsplitViewのどちら側に表示されるかについて何も知らなければならない理由がわかりません。確かに、この情報を保持するオブジェクトはセグエであり、私が言うように、「詳細」または「マスター」分割を選択すると、これがストーリーボードに「設定」されているように見えます。
たぶんそれは何のプロパティでもないのですが、どうやってそれを手に入れるのかわかりません。
viewWillAppear で destinationViewController を照会して、画面に表示された後にどの NavigationController にあるかを調べることができると思いますが、これも少し「ハッキー」に思えます。