2012-04-02 15 views
1

Wenn ich die Hintergrundfarbe MonoTouch.Dialog auf uiclear (transparent) setze, wird eine Ausnahme ausgelöst, warum? und wie man es auf transparent setzt.So stellen Sie den Hintergrund auf einem DialogViewController transparent ein

Unbehandelte Ausnahme: System.NullReferenceException: Objektverweis nicht auf eine Instanz eines Objekts MyDialogViewController.LoadView gesetzt() [0x00016] in 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); 
} 

Antwort

1

Die NullReferenceExceptionhöchstwahrscheinlich tritt auf, weil ParentViewControllernull ist.

Je nachdem, wie MyDialogViewController zeigte sich diese könnte fällig die falsche Eigenschaft zu nutzen und eine aktuelle, iOS5, change:

Vor iOS 5.0, wenn eine Ansicht nicht über eine übergeordnete Ansicht Controller und wurde präsentiert, würde der präsentierende View-Controller zurückgegeben werden. Unter iOS 5 tritt dieses Verhalten nicht mehr auf. Verwenden Sie stattdessen die presentingViewController-Eigenschaft, um auf den präsentierenden Ansichtscontroller zuzugreifen.

Wenn jedoch die MyDialogViewController das Fenster des ist RootViewController als normal, es ist für diese Eigenschaften null zu sein. In diesem Fall einfach mit UIColor.Clear auf der TableView bekomme ich einen schwarzen Hintergrund (ich hatte nichts da), so sollte es für MT.D Teil genug sein. Wenn Sie einen Elternteil haben, können Sie versuchen, die Hintergrundfarbe zu setzen (falls erforderlich), bevor Sie Ihren MyDialogViewController anzeigen.

+0

danke Ihre Antwort. Bevor ich den MyDiaogViewController (MT.D) anzeige, habe ich die aktuelle UIView auf UIClear gesetzt, und auch mtd.view.backgroudcolor & mtd.tableview.backgroundcolor auf uiclear (opaque = false) gesetzt, dann füge mtd.view der Datei hinzu aktuelle Ansicht (this.view.addsubview (mtd.view), aber die Mtd-Region ist immer noch grau, ich möchte mit transparent anzeigen. Es ist seltsam. – BlueSky

+1

menuDVC (es ist MT.D View-Controller) 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

Froh, dass du es bekommen hast :) – poupou

Verwandte Themen