Как установить прозрачный фон на DialogViewController - PullRequest
1 голос
/ 02 апреля 2012

Когда я устанавливаю цвет фона MonoTouch.Dialog на uiclear (прозрачный), возникает исключение, почему? и как установить его прозрачным.

Необработанное исключение: 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 Ответ

1 голос
/ 02 апреля 2012

NullReferenceException наиболее вероятно происходит потому, что ParentViewController равно null.

В зависимости от того, как показано ваше MyDialogViewController, это может быть обусловленоиспользовать неправильное свойство и недавнее изменение iOS5, :

До iOS 5.0, если представление не имело родительского контроллера представления и было представлено, представлениеконтроллер представления будет возвращен.На iOS 5 такого поведения больше не возникает.Вместо этого используйте свойство presentingViewController для доступа к представляемому контроллеру представления.

Однако, если MyDialogViewController - это RootViewController окна, тогда для этих свойств нормально будет null.В этом случае просто используя UIColor.Clear на TableView, вы получите черный фон (у меня там ничего не было), так что этого должно быть достаточно для части MT.D.Если у вас есть родитель, то вы можете попытаться установить его фоновый цвет, чтобы очистить (при необходимости), прежде чем отображать ваш MyDialogViewController.

...