web-dev-qa-db-ja.com

ストーリーボードのビューコントローラーの外のUIView

StackoverflowやGoogleの公式ドキュメントで回答が見つからない質問に悩まされています。

私は経験豊富なiOS開発者ですが、ストーリーボードは初めてです。現在のビューコントローラーでビューをインスタンス化したいのですが、NIBでは、viewControllerの外側に描画し、コンセントを接続してコードで参照し、addSubview:などを呼び出します。 MapViewデリゲートで使用するオーバーレイ、または現在の場合は吹き出しビューを描画すると便利です。しかし、ストーリーボードでこれを行う方法を理解できません。

私はビューコントローラーの外にビューを持っているようには見えません、そしてビューコントローラー内のビューはコントローラーのビューのサブビューであるか、またはインターフェイスビルダーにまったく表示されていない必要があります、従来のNIBですが、細部まで調整する必要がある場合はかなり問題になります)。

何をすべきか、どこを見ればよいかについてのヒントはありますか?ありがとう。

35
KPM

それを行う方法はないようです。 ジェイソンのコメントこの質問 を参照してください。ただし、状況は異なりますが、同じ問題に対処しています。

ただし、問題の影響について考えるときに、以前に気づきました。完全な答えの価値があると判断する前に 私の以前のコメント で説明し始めたように、カスタムのデザインを分離することは理にかなっていますアプリケーションフローの設計からの眺め。したがって、ストーリーボードでカスタムビューを設計することができないという事実は、設計上、非常によくあることです。

カスタムビュー(再利用可能なコンポーネント)は、ビューコントローラー(アプリケーションストーリーボードのシーンを表す)とは大きく異なります。映画のキャラクターやシーンと同じです。 1つのシーンでのみそのキャラクターを使用する場合でも、シーン内でキャラクターをデザインする必要はありません。 1つのシーンで使用するのは偶然ですが、必須ではありません。したがって、それは別個である必要があります。

Interface Builderを使用してカスタムビューを設計するのは、クラスにカプセル化する必要がある 実装の詳細 だけです。アプリケーションストーリーボードでは、再利用可能なビューの特定の実装をどのように処理するかを知る必要はなく、管理もそれほど必要ありません。

うーん、私はこのブランドの尋問がもっとあったらいいのに:)

30
KPM

コンテナービューは通常のビューと同様に使用できます(IBOutlet UIViewを割り当てることができます)が、UIViewControllerの外部で定義することもできます。

The "container view" is outside the view, but i can assign it to a IBOutlet UIViewYou can design it

26
Josejulio

私自身も同じことを考えていましたが、実際にこれを実現することができました。 Nav Controller、View Controller、および2つのビューがあります。別のペン先でビューを作成し、このプロジェクトにインポートしました。がボタンを接続しているときに、私が作業していたビューが突然ビューコントローラーの横に表示されました。残念ながら、他のビューを表示させようとしているときに、どういうわけかそれを失い、それを戻す方法がわかりませんでした。ビューをストーリーボードにドラッグすることはできません。ビューコントローラーにのみドラッグできます。でも、一度できたら再現可能に。

2
Joel Wehr