我想創建一個非標準的頂部導航欄供我的應用程序使用。爲了實現這一點,我一直在試圖子類UINavigationController
和UINavigationBar
Xamarin子類UINavigationController與自定義UINavigationBar
我有一個自定義NavigationController
類
partial class ZooNavigationController : UINavigationController
{
public ZooNavigationController (IntPtr handle) : base (typeof(TopNavBar), null)
{
this.Handle = handle;
}
}
指向基構造
public UINavigationController (Type navigationBarType, Type toolbarType);
爲我定製UINavigationBar
類TopNavBar
這就像...
public class TopNavBar : UINavigationBar
{
public TopNavBar()
{
InitCustom();
}
public void InitCustom(){
this.BackgroundColor = UIColor.Red;
// a bunch more custom stuff
}
}
問題是,當我運行這個時,TopNavBar永遠不會被調用。如果我儘量調整我的構造看起來像這樣:
public ZooNavigationController (IntPtr handle) : base (typeof(TopNavBar), null)
{
this.Handle = handle;
TopNavBar test = (TopNavBar)this.NavigationBar;
}
我得到一個運行時異常,它不能投的類型,因此它似乎它無視我的電話指定UINavigationBar
類型。
任何人都可以幫我解決我在這裏失蹤的事嗎?
編輯最後事實證明我錯過了可以在故事板中設置自定義UINavigationBar的事實。結合,與米格爾的答案,我結束了與類
partial class TopNavBar : UINavigationBar
{
public TopNavBar(IntPtr test) : base(test) {
}
[Export ("initWithCoder:")]
public TopNavBar (NSCoder coder) : base (coder) {
InitCustom();
}
}