我正在编写一个视图控制器,用于向我的应用程序中添加新项目。它非常适合使用MonoTouch.Dialog完成,因为可以轻松地使用基于表格的界面完成,每个相关属性的字段都可以显示出来。
以下是我目前用于显示添加项目视图的代码(简化了一些,但核心思想保持不变):
然而,我无法想出如何实现这一点。我认为逻辑上应该做的事情是创建一个
我的第二个方法是实现一个
从那里开始,我陷入了困境。我在示例中也找不到使用MonoTouch.Dialog进行这样的操作的示例。这是否可能做到?如果不是,写这样的代码有什么不好的原因吗?
以下是我目前用于显示添加项目视图的代码(简化了一些,但核心思想保持不变):
Item item = new Item();
TapHandler handler = new TapHandler();
BindingContext bc = new BindingContext(handler, item, "Add Item");
DialogViewController dv = new DialogViewController(bc.Root, true);
this.NavigationController.PushViewController(dv, true);
虽然那样也可以工作,但我更希望能将视图的细节封装到它自己的视图控制器中,这样代码就可以像这样:
UIViewController controller = new AddItemViewController();
this.NavigationController.PushViewController(controller, true);
然而,我无法想出如何实现这一点。我认为逻辑上应该做的事情是创建一个
DialogViewController
子类。但是,所有DialogViewController
的构造函数都需要一个RootElement
。要获得它,你首先需要创建BindingContext
。由于在调用基础构造函数之前不能运行任何代码,因此它最终不起作用。我的第二个方法是实现一个
UIViewController
子类,创建DialogViewController
,然后使用this.AddChildViewController(dv)
和this.View.AddSubView(dv.View)
将对话框视图控制器添加为我的子类的子项。虽然最初可以工作,但如果您在UINavigationController中有新的视图控制器,并单击日期元素,则日期视图将显示为模态弹出窗口,而不是在导航控制器层次结构中(这是有道理的,因为在这种设计中,DialogViewController
不是NavigationController
层次结构的一部分)。从那里开始,我陷入了困境。我在示例中也找不到使用MonoTouch.Dialog进行这样的操作的示例。这是否可能做到?如果不是,写这样的代码有什么不好的原因吗?