2012-04-02 10 views
1

MonoTouch.Dialogの背景色をuiclear(透明)に設定すると、例外がスローされます。なぜですか?透明に設定する方法。DialogViewControllerで背景を透明に設定する方法

未処理の例外:System.NullReferenceException:オブジェクトMyDialogViewController.LoadView(のインスタンスに設定されていないオブジェクト参照)[0x00016] MyDialogViewController.csで:ParentViewController.View.BackgroundColor = UIColor.Clear

public class MyDialogViewController: DialogViewController 
{ 
    public MyDialogViewController (RootElement root) : base (root) 
    { 
    } 

    public override void LoadView() 
    { 
     base.LoadView(); 
     this.TableView.BackgroundColor = UIColor.Clear; 
    ParentViewController.View.BackgroundColor = UIColor.Clear; 

    } 
} 


    public void xxxxx(){ 
     var menu = new RootElement(""){ 
      new Section ("Demo"){ 
       new EntryElement("Name", "",""), 
      }, 
     }; 

     var menuDVC = new MyDialogViewController (menu) { 
      Autorotate = true 
     }; 



     this.View.AddSubview(menuDVC.View); 
} 

答えて

1

NullReferenceException最も可能性の高いParentViewControllernullであるために発生。

あなたMyDialogViewControllerが示した方法に応じて、このによる間違った財産と最近、iOS5を、changeを使用するかもしれません:

、iOSの5.0より前のビューは、親ビューを持っていなかった場合コントローラが提示されていた場合は、表示されているビューコントローラが返されます。 iOS 5では、この動作は発生しなくなりました。代わりに、presentingViewControllerプロパティを使用して、プレゼンテーションビューコントローラにアクセスします。 MyDialogViewControllerがウィンドウのRootViewControllerであれば、それらの性質がnullするため

は、しかし、それは普通のことです。この場合、単にUIColor.ClearTableViewに使ってみると、黒い背景(私は何も持っていませんでした)を得ることができるので、MT.Dの部分で十分であるはずです。親があれば、MyDialogViewControllerを表示する前に背景色をクリアするように設定することができます(必要な場合)。

+0

お返事ありがとうございます。 MyDiaogViewController(MT.D)を表示する前に、現在のUIViewをUIClearに設定し、mtd.view.backgroudcolor&mtd.tableview.backgroundcolorをuiclear(opaque = false)に設定してから、mtd.viewを現在のビュー(this.view.addsubview(mtd.view)、mtd領域はまだ灰色ですが、透明で表示したいです) – BlueSky

+1

menuDVC(MT.Dビューコントローラ)menuDVC.View.Frame = new RectangleF (20,90,300,550); \t \t \t menuDVC.View.BackgroundColor = UIColor.Clear; \t \t \t menuDVC.View.Opaque = FALSE; \t \t \t menuDVC.TableView.BackgroundColor = UIColor.Clear; \t \t \t \t menuDVC.TableView.Opaque = false; \t \t \t this.View.AddSubview(menuDVC.View); – BlueSky

+0

嬉しいです:) – poupou

関連する問題