【问题标题】:How to set the background to transparent on a DialogViewController如何在 DialogViewController 上将背景设置为透明
【发布时间】:2012-04-02 13:31:34
【问题描述】:

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

未处理的异常: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);
}

【问题讨论】:

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


    【解决方案1】:

    NullReferenceException最有可能出现是因为ParentViewControllernull

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

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

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

    【讨论】:

    • 感谢您的回复。在显示 MyDiaogViewController(MT.D) 之前,我已将当前 UIView 设置为 UIClear,并将 mtd.view.backgroudcolor & mtd.tableview.backgroundcolor 设置为 uiclear(opaque=false),然后将 mtd.view 添加到当前视图(this.view.addsubview(mtd.view),但是mtd区域还是灰色的,我想用透明显示。奇怪。
    • menuDVC(它是 MT.D 视图控制器) menuDVC.View.Frame= new RectangleF(20,90,300,550); menuDVC.View.BackgroundColor=UIColor.Clear;菜单DVC.View.Opaque=false; menuDVC.TableView.BackgroundColor=UIColor.Clear;菜单DVC.TableView.Opaque=false; this.View.AddSubview(menuDVC.View);
    猜你喜欢
    • 2014-04-05
    • 1970-01-01
    • 2011-11-10
    • 1970-01-01
    • 2014-01-25
    • 2014-06-20
    • 2011-10-04
    • 1970-01-01
    • 2011-08-31
    相关资源
    最近更新 更多