当我将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);
}
答案 0 :(得分:1)
NullReferenceException
最有可能,因为ParentViewController
是null
。
根据MyDialogViewController
的显示方式,可能是由于使用了错误的属性和最近的iOS5,change:
在iOS 5.0之前,如果视图没有父视图控制器并且正在呈现,则将返回呈现视图控制器。在iOS 5上,不再出现此行为。而是使用presentViewController属性来访问呈现视图控制器。
但是,如果MyDialogViewController
是窗口的RootViewController
,则这些属性null
是正常的。在这种情况下,只需在UIColor.Clear
上使用TableView
给我一个黑色背景(我什么都没有),所以它应该足够MT.D部分。如果您有父母,则可以在显示MyDialogViewController
之前尝试将其背景颜色设置为清除(如果需要)。