MonoTouch对话框—空导航控制器
本文关键字:导航 控制器 对话框 MonoTouch | 更新日期: 2023-09-27 18:20:02
我正在寻找一种在单击GlassButton
时更改屏幕的方法。我刚刚开始学习Monotouch.Dialog。我已经做了以下操作来尝试处理这个问题。
public override void ViewDidLoad ()
{
button.TouchUpInside += (sender, e) => {
this.NavigationController.PushViewController(list, true);
};
}
列表是一个UIViewController
,但单击时,指向的this.NavigationController.PushViewController(list, true);
带有一个空引用异常。list
已被实例化并且不为null,但是this.NavigationController
为null。我该怎么解决这个问题?
GlassButton button = new GlassButton (new RectangleF(0, 0, 200, 50));
List list = new List ();
public static EntryElement lastName = new EntryElement (null, "Enter Last Name", null);
public static EntryElement firstName = new EntryElement (null, "Enter First Name", null);
public static EntryElement middleInitial = new EntryElement (null, "Enter Middle Initial", null);
public practice () : base (UITableViewStyle.Grouped, null)
{
Root = new RootElement ("Level 1") {
new Section() {
new RootElement("Level 2") {
new Section("Individual Information") {
lastName, firstName, middleInitial
},
new Section("Submit") {
button
}
}
}
};
}
我也遇到了同样的问题,并通过从DialogViewController
派生子类来解决
public class CustomDialogViewController : DialogViewController
{
public CustomDialogViewController(RootElement root)
: base(null, true)
{
base.Root = root;
}
}
在我的主视图控制器中,我在ViewDidLoad()中使用了以下内容:
var root = new RootElement("Customer form");
// code to generate section and add into root
CustomDialogViewController customDialogViewController = new CustomDialogViewController(root);
var navigationController = new UINavigationController(customDialogViewController);
this.AddChildViewController(this.navigationController);
this.View.AddSubview(this.navigationController.View);