2012-03-25 16 views
9

私は現時点ではモノタッチを学び、Mike BlueSteinによるモノトックの学習書に従っています。悪い本ではありませんが、xcode 4(私は信じて)から少し古くなっていて、モノトゥアの新しいバージョンが出てきました。モノビューのXIBファイル定義ビューにカスタムビューを追加する方法

とにかく、私のプロジェクトでは、コントローラとxibファイルがあります。また、描画メソッドをオーバーライドするカスタムビュー(myview:UIViewなど)もあります。私はxibファイルで定義されたビューの上または上に自分のカスタムビューを表示したい。これはどうすればいいですか?

コントローラでは、LoadViewメソッドをオーバーライドしてビューをカスタムビューのインスタンスに設定すると表示されますが、xibファイルで定義されているすべてが緩んでいます。サブビューとして追加しようとすると、まったく表示されません。

私には何が欠けていますか?質問が明確でない場合は、私に尋ねてください。私は明確にすることができます。

乾杯。

+0

この[SO質問](http://stackoverflow.com/questions/863321/iphone -navファイルを使用して作成されたインターフェイスを表示する方法)は、 – tipycalFlow

答えて

22

XIBでカスタムビューを使用するには、次の手順に従ってください:

まず、RegisterAttributeでビューを飾る:

[Register("MyView")] 
public class MyView : UIView 
{ 
} 

と、次のコンストラクタを実装:

public MyView(IntPtr handle) : base(handle) {} 

このコンストラクタは、メモリ警告によって破棄された後にランタイムがビューを再作成しようとするときに必要です。 (常にMonoDevelopの通じ、それをダブルクリックして)Xcodeで

  • オープンXIB、あなたがそれをしたいUIViewを追加:あなたのカスタムクラスを作成した後。
  • はXcodeで、MYVIEWへのUIViewのクラス(またはどちらかの名前は、あなたが RegisterAttributeに渡された)という設定:

Custom class for custom view

  • コンパイルを実行します。

EDIT:

XIBからロードされているコントローラのLoadViewを上書きしないでください。 LoadViewは、コントローラのビューがXIBからロードされていないときにコントローラのビューを作成するためのものです。

+0

おかげで助けになるかもしれません。完璧な答え。 –

3

ありがとうDimitris、素晴らしい答え。私のような混乱人のために

は、ここでは部分的/サブビューとしてXIBファイルを追加して使用するsimplist手順です:

  1. MonoDevelopの中に新しいXIBファイルを追加します(つまり、LoginView.xib
  2. 新しい(部分)クラスを追加します。これはビューのカスタムクラス(コードビハインドファイルと言います)です。任意の名前「LoginView.cs」)
  3. 上記のexaplainとして属性(RegisterAttribte)とConstrctorを Dimitrisで追加します。
    1. LoginView.xibをダブルクリックしてXcode IBで開きます。次に、必要な場合(つまりLoginView.cs
  4. は、任意のアウトレットやアクションを追加するには、「コードビハインドファイル」を指すようにXIBファイルの​​属性を変更します。 MonoDevelopは.designerファイルを生成してそれをコードビハインドファイルに添付します。ここであなたのすべてのアウトレットとアクションを見ることができます。あなたは、このビューを追加し、次のようにあなたの.xibファイルをロードしたいあなたのコントローラで
  5. するvarビュー= NSBundle.MainBundle.LoadNib( "LoginView" を、この、NULL); LoginView loginView = LoginViewとしてRuntime.GetNSObject(views.ValueAt(0)); mainLayout.AddSubview(loginView); // mainLoyoutは、これらの3行はflexaddicted回答に基づいている

私のメインのViewController内のプレースホルダですhere

関連する問題