为MonoTouch.Dialog中的每个RootElement设置一个专用的UIViewController?

Bri*_*man 4 c# xamarin.ios ios monotouch.dialog

使用嵌套创建多级菜单结构很容易RootElements,MonoTouch.Dialog但是如何进行特定的UIViewController管理?我希望每个RootElement人拥有它自己UIViewController的原因是因为我希望能够轻松地控制像背景图像这样的东西并将NavigationBar从一个屏幕切换到另一个屏幕,并且这样做是很简单的UIViewController.

pou*_*pou 9

我想你正在寻找这个:

public RootElement (string caption, Func<RootElement, UIViewController> createOnSelected)
Run Code Online (Sandbox Code Playgroud)

它允许您创建UIViewController(例如DialogViewController,您自定义的或从其继承的类型).

这将让你保持嵌套,Element同时给予视图和控制器的大部分控制权.

UPDATE

以下是如何使用它:

首先声明将创建UIViewController的方法.方法签名必须匹配Func<RootElement, UIViewController>,例如

    static UIViewController CreateFromRoot (RootElement element)
    {
        return new DialogViewController (element);
    }
Run Code Online (Sandbox Code Playgroud)

接下来使用以下方法创建根元素

    var root_element = new RootElement ("caption", CreateFromRoot);
Run Code Online (Sandbox Code Playgroud)

以上将给你相同的:

    var root_element = new RootElement ("caption");
Run Code Online (Sandbox Code Playgroud)

除了你现在能够DialogViewController在返回之前根据自己的喜好自定义.


Jam*_*rey 8

同样的事情,更少的方法......

    var root_element = new RootElement("caption", (RootElement e) => {
        return new DialogViewController (e);
    });
Run Code Online (Sandbox Code Playgroud)