2012-01-06 5 views
2

私はこの種の質問が前にバンドになっていたことを知っていますが、私は現時点で自分自身に直面している質問に対する決定的な答えを見つけられませんでした。そして、それは図書館内のです。UIViewControllerサブクラスを複雑な図で表示するにはどうすればいいですかUIViewController iOSフレームワークまたは従属プロジェクトのXIB

  1. 船XIBだけでなく、あなたのコードのユーザーが自分のプロジェクトに追加することを尋ねる:私は見ることができます

    の方法があります。メンテナンスを悪夢にさせるので、これは私の意見では望ましくありません。ビュー・コントローラーをライブラリー・プロジェクトに追加する場合は、ライブラリーを使用するすべてのプロジェクトに新しいXIBを追加する必要があります。

  2. ビューをloadView/viewDidLoadに作成し、手動ですべてを行うという苦労をそこで行います。複雑なビュー階層の場合でも、これは非常に複雑になる可能性があります。

  3. コンパイル時にXIBからコードloadViewを何とか生成してください。しかし、これを適切に行う何かを得るために複雑に聞こえる。

Appleがそれをどうやって行うのか分かりません。たとえばMessageUIフレームワークでは、MFMailComposeViewControllerがかなり複雑なビューですが、XIBはありません(少なくとも、とにかく私が知っているわけではありません。 Appleがどのようにしているのか知りたいと思っています。誰にも分かりますか?

+0

アップルは特定のものについてはIBを使用していますが、それらのUIコードは既にコンパイルされ、デバイス上にあることになります。いずれにせよ、デバイス上の内容を変更することはできないので、開発キットに含める必要はありません。 MessageUIのUIは、実際にはかなり簡単です。もし彼らがそれにペン先を使っていたら、それはおそらくメールと共有されているでしょうが、おそらくコードでそれを作成するだけです。 –

+0

それは簡単ではありません。私は、SDKに付属の 'MessageUI'バイナリで見ることができます。私はそれが 'initWithComposition:'というメソッドを持っていることがわかります。これは、何が呼び出されているのかが分かりませんので、やや混乱します。 – mattjgalloway

+0

いいえ、私は今理解しています。別のコントローラオブジェクトとそのビューの重い吊り上げを行うように見えるビューがあります。そう、はい、彼らは基本的にすべてコードでそれを行います。 – mattjgalloway

答えて

2

私の考えでは、手動ですべてのものを手動でコーディングしていますが、これは最良の選択です。時にはInterfaceBuilderは、知られていない/間違って文書化された設定などを適用して、実際にあなたの作品をハイジャックすることができます。たとえば、Linux用の非公式のツールチェーンを使用するツールチェーンを使用すると、Interface Builderなしでライブラリを使用できなくなる可能性があります。コードは開発者によって書かれていなければなりません。コンパイラ+アセンブラ+リンカでコンパイルすることができます。コンパイラ+アセンブラ+リンカは、IDE、SDK、または他のテクノロジに依存することなく、プロジェクト。

+0

それは公正な点です、私はあなたがそこから来ているのを見ています。私は、本当に 'loadView'を使ってコードがどれほど長続きしているかを見てみるのはまだ始まっていないと思います。 – mattjgalloway

関連する問題