2012-03-25 75 views
9

我想此刻學習MonoTouch的,並按照麥克BlueStein的學習MonoTouch的書。不是一本不好的書,但它自xcode 4(我相信)稍微過時了,並且Monoouch的更新版本已經出來。如何自定義視圖添加到XIB文件中定義的視圖中的MonoTouch

不管怎麼說,在我的項目我有一個控制器和一個XIB文件。我也有一個自定義視圖(例如myview:UIView),它覆蓋了繪製方法。我想在xib文件中定義的視圖的旁邊或頂部顯示自定義視圖。我該怎麼做呢?

在控制器中,如果我重寫的loadView方法,並在視圖設置爲我的自定義視圖的一個實例,那麼我可以看到它,但我失去的廈門國際銀行文件中定義的一切。如果我嘗試添加爲子視圖,則完全不顯示。

我錯過了什麼?如果問題不明確,請問我,所以我可以澄清。

乾杯。

+0

這[SO問題](http://stackoverflow.com/questions/863321/iphone -how-load-a-view-using-a-nib-file-created-with-interface-builder)可能會幫助 – tipycalFlow 2012-03-25 06:30:17

回答

22

按照以下步驟來使用的廈門國際銀行的自定義視圖:

首先,裝飾與RegisterAttribute的觀點:

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

,並實現以下構造:

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

當運行時在內存警告被破壞後嘗試重新創建視圖時,需要此構造函數。 (總是通過雙擊它通過的MonoDevelop)

  • 打開XIB在Xcode,並添加你想要它UIView:在您創建自定義類。
  • 在Xcode中,設置的UIView的類MyView的(或任何名字,你傳遞給RegisterAttribute):

Custom class for custom view

  • 編譯運行。

編輯:

不要爲那些從廈門國際銀行加載控制器覆蓋LoadViewLoadView是爲了在控制器的視圖沒有從XIB加載時創建控制器的視圖。

+0

乾杯。完美的答案。 – 2012-03-25 21:52:16

3

感謝Dimitris,很好的回答。

對於那些誰感到困惑和我一樣,這裏是simplist程序添加和使用XIB文件作爲部分/子視圖:

  1. 添加一個新的XIB文件中的MonoDevelop(即LoginView.xib
  2. 添加一個新的(部分)類,這將是視圖的自定義類(讓我們假設代碼隱藏文件)。給它的任何名稱「LoginView.cs」)
  3. 添加屬性(RegisterAttribte)和Constrctor如exaplain以上通過 季米特里斯。
  4. 雙擊LoginView.xib XCode中IB將其打開。然後更改​​屬性的廈門國際銀行文件的指向你的「代碼隱藏文件」(即LoginView.cs
  • 添加任何網點或行動,如果你需要的。 MonoDevelop將生成一個.designer文件並將其附加到代碼隱藏文件中,這是您可以查看所有網點和操作的地方。
  • 在你的控制器,你要添加這個觀點,如下加載您的.xib文件:

    VAR的看法= NSBundle.MainBundle.LoadNib( 「LoginView」,對此,NULL); LoginView loginView = Runtime.GetNSObject(views.ValueAt(0))作爲LoginView; mainLayout.AddSubview(loginView); //其中mainLoyout是我的主視圖控制器的佔位符

  • 這三行均基於flexaddicted答案here

    相關問題