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

时间:2011-12-17 14:42:14

标签: c# ios xamarin.ios monotouch.dialog

使用RootElements中的嵌套MonoTouch.Dialog创建多级菜单结构很容易,但是如何让特定的UIViewController管理每个根?我希望每个RootElement拥有它自己的UIViewController的原因是因为我希望能够轻松控制背景图像之类的事情并将NavigationBar从一个屏幕切换到另一个屏幕,并且这样做是从{ {1}}。

2 个答案:

答案 0 :(得分:9)

我认为你正在寻找这个:

public RootElement (string caption, Func<RootElement, UIViewController> createOnSelected)

可让您创建UIViewController(例如您自定义的DialogViewController或从中继承的类型。)

这样可以让您保持嵌套Element,同时对视图及其控制器进行大部分控制。

<强>更新

以下是如何使用它:

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

    static UIViewController CreateFromRoot (RootElement element)
    {
        return new DialogViewController (element);
    }

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

    var root_element = new RootElement ("caption", CreateFromRoot);

以上内容将与您相同:

    var root_element = new RootElement ("caption");

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

答案 1 :(得分:8)

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

    var root_element = new RootElement("caption", (RootElement e) => {
        return new DialogViewController (e);
    });