0

作成しているiPhoneアプリのカスタムビューの作成に取り組んでいます。このカスタムビューは、2つの画像、ダイアログを閉じるためのボタン、ラベル、およびUIScrollViewを含むUIViewで構成されるポップオーバーダイアログです。このビューの名前はMDPopoverCardです。ビューの一部としてこれらのファイルがあります。

MDPopoverCard.xib - The view as drawn up in Interface Builder.
MDPopoverCard.h - Defines a few IBActions and some other properties 
MDPopoverCard.m - Implements some functions defined in the header

これは、Interface Builderでの表示です:http://cl.ly/2B0f2x3s1w1i0K2G0Q1r(申し訳ありませんが、stackoverflowを初めて使用するため、まだ画像を投稿できません)

.mファイルと.hファイルには、緑色のボタンを表示するかどうか、およびタイトルラベルのテキストを制御するいくつかのプロパティが定義されています。

アプリにこれらのダイアログをいくつか表示する必要があり、設計したこのインターフェイスを再利用したいと思います。InterfaceBuilderを介してボタンやその他のフォーム要素をUIScrollViewに追加できるようにしたい。ただし、問題があります。

InterfaceBuilderで作成している別のビューがあると想像してください。UIViewを追加し、そのクラスをMDPopoverCardに設定します。次に、いくつかのUIButtonオブジェクトをMDPopoverCardビューにドラッグします。InterfaceBuilderでの表示例を次に示します。

http://cl.ly/1X090h1t1q3f0i3E0917

このスクリーンショットは、MDPopoverCardを追加した別のビュー(ルートビュー)を示しています。次に、MDPopoverCardのサブビューとして2つのボタンを追加しました。

これらのボタンは、InterfaceBuilderで適切にネストされます。ただし、アプリを実行すると、これらのボタンは、xibファイルのMDPopoverCardビューを構成するアイテムの前に追加されます。これは、ボタンがポップオーバーダイアログの後ろに追加されていることを意味します。それが最初の問題です。

2番目の問題は、これらのボタンとフォーム要素を、UIViewのサブビュー配列だけでなく、MDPopoverCardビュー内に含まれるUIScrollViewに実際に追加することです。Interface Builderでこれを指定する方法はありますか?表示する必要のあるこれらのダイアログのすべてのインスタンスを手書きするよりも、UIViewにボタンを描画し、Interface Builderを介してそれらをIBActionsに接続したい(いくつか)。

何かアドバイス?質問を明確にするために私にできることはありますか?

ご協力いただきありがとうございます!

4

1 に答える 1

0

以前のXcodeは、カスタムUI要素用のユーザー定義のIBプラグインをサポートしていました。これは、組み込みのウ​​ィジェットを使用する場合と同じように、XIBにドラッグアンドドロップするだけで済みます。Xcode 4以降、この優れた機能は削除されました。(どうもありがとう、アップル。)

現在、私はあなたが説明したことを達成するためのハッキーな方法しか考えられません。私がすることは次のとおりです。

  1. あなたの上に作成IBOutletCollectionしますMDPopoverCard、例えばembeddedControls
  2. スクロールビュー内に移動するすべてのUI要素(ここではボタン)にリンクします
  3. inを実装し、awakeFromNibinMDPopoverCardのすべてのビューのスーパービューembeddedControlsをそこのスクロールビューに明示的にリセットします

これがお役に立てば幸いです(私は試していませんが)。

于 2012-06-26T09:49:47.587 に答える