如何在DialogViewController上将背景设置为透明

时间:2012-04-02 13:31:35

标签: c# ios xamarin.ios monotouch.dialog

当我将MonoTouch.Dialog背景颜色设置为uiclear(透明)时,会抛出异常,为什么?以及如何将其设置为透明。

  

未处理的异常:System.NullReferenceException:对象引用未设置为MyDialogViewController.cs中的对象MyDialogViewController.LoadView()[0x00016]的实例: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 个答案:

答案 0 :(得分:1)

NullReferenceException 最有可能,因为ParentViewControllernull

根据MyDialogViewController的显示方式,可能是由于使用了错误的属性和最近的iOS5,change

  

在iOS 5.0之前,如果视图没有父视图控制器并且正在呈现,则将返回呈现视图控制器。在iOS 5上,不再出现此行为。而是使用presentViewController属性来访问呈现视图控制器。

但是,如果MyDialogViewController是窗口的RootViewController,则这些属性null是正常的。在这种情况下,只需在UIColor.Clear上使用TableView给我一个黑色背景(我什么都没有),所以它应该足够MT.D部分。如果您有父母,则可以在显示MyDialogViewController之前尝试将其背景颜色设置为清除(如果需要)。