2

OK、これはモノタッチなので、おそらく少し難しいでしょう...

複数の画面で再利用する予定の再利用可能なカスタムツールバーがあります。

InterfaceBuilderでツールバーを作成したい

任意のViewControllerからツールバーのラベルを更新できるようにしたい。したがって、5つの異なるView Controllerがあり、すべてにこのツールバーがあり、ラベルを更新できます。

だから私の質問は:

  1. MonoTouchでUIViewのサブクラス化を開始するにはどうすればよいですか?新しい「iPhoneView」を作成すると、ペン先だけが表示されます。アウトレットやアクションを接続する場所がありません。

  2. UIViewをサブクラス化するためのC#コードファイルを持つようにMonoTouchを設定して、イベントを処理し、プロパティにアクセスできるようにする方法を教えてくれるとしたら、それをnibに接続するにはどうすればよいですか?多くの人がinitWithFrameを使用してObjective-CでloadNibNamedを呼び出すと言っているのを目にしますが、これはMonoTouchに正しく変換されません。MonoTouchでそれをどのように行うのですか?

  3. #1と#2が満たされている場合、このカスタムツールバーを任意のViewControllerにロードし、画面上の特定の座標に追加するにはどうすればよいですか?initWithFrame CGRectを実行することは、MonoTouchでは単純なパスではないようです。

誰かがこれを理解することができれば、あなたは素晴らしいです!!!!

よろしくお願いします!

4

2 に答える 2

2

それで、たくさん掘り下げた後、私はついに答えを見つけました。

最も有益なチュートリアルは次のとおりです。

http://sgmunn.com/blog/2012/03/using-loadnib-to-load-a-view/

基本的に、カスタム サブビューを作成し、インターフェイス ビルダーで設定してから、MonoTouch 側で簡単なマッピングを行う必要があります。しかし、この例から私を遠ざけていた重要なポイントは次のとおりです。

UIView をサブクラス化するときは、IntPtr の基本コンストラクターを実装する必要があります。

そうすれば、すべてがうまくいきます。アウトレットとアクションが接続されており、自由に操作できます。

編集:リンクするだけでなく、より説明的にするために...

MonoTouch で UIView のサブクラス化を開始するにはどうすればよいですか? 新しい「iPhone ビュー」を作成すると、ペン先だけが得られます。コンセントやアクションを接続する場所がありません。

新しい iPhone ビューを作成すると、ペン先が作成されます。ペン先を開き、「カスタム クラス」をカスタム クラスに設定します。MonoTouch はそれを自動的に生成する必要があります。そうでない場合は、新しい C# クラスとサブクラス UIView を作成しますが、必ず IntPtr のコンストラクターを作成してください。ストーリーボードを使用する場合、Storyboard.InstantiateViewController() を呼び出すと、IntPtr 値が入力されます。Storyboard.InstantiateViewController を使用する場合は、識別子もカスタム クラスの名前に設定する必要があることに注意してください。

その iPhone ビューを作成すると、IB で「コード ビュー」を開いて、アウトレットとアクションを接続できるようになります。

イベントを処理してプロパティにアクセスできるように、UIView をサブクラス化するための C# コード ファイルを使用するように MonoTouch をセットアップする方法を教えていただければ、それを nib に接続するにはどうすればよいですか? 多くの人が、Objective-C で initWithFrame を使用して loadNibNamed を呼び出すように言っていますが、これは正しく MonoTouch に変換されません。MonoTouch でそれを行うにはどうすればよいですか?

MonoTouch には initWithFrame: または CGRect はありません。RectangleF を使用します。ペン先をプログラムでロードする場合は、RectangleF を受け取るコンストラクターを使用し、それを使用して x、y、幅、高さを設定できます。

#1 と #2 が満たされている場合、このカスタム ツールバーを任意のビュー コントローラーにロードし、画面上の特定の座標に追加するにはどうすればよいですか? initWithFrame CGRect を実行すると、MonoTouch に単純なパスがないようです

ストーリーボードの場合、Storyboard.InstantiateViewController を使用します (IB で識別子を設定してください)。それ以外の場合は、次を使用します。

var nibObjects = NSBundle.MainBundle.LoadNib("YourViewName", theController, null);
var instantiatedView = (YourClassName)Runtime.GetNSObject(nibObjects.ValueAt(0));

上記のリンクに示されているように。

楽しみ!-アリソン。

于 2012-12-07T20:13:44.047 に答える