Я пишу контроллер представления для добавления нового элемента в мое приложение.Он идеально подходит для MonoTouch.Dialog, так как это легко сделать с помощью интерфейса на основе таблицы, с полем для соответствующего свойства моего элемента.
Это код, который у меня есть в настоящее время для отображения элемента добавленияview (упрощенно, но основная идея остается):
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, как это в примерах.Возможно ли это сделать?Или, если это не так, есть ли веская причина, почему написание такого кода - плохая идея?