2011-12-17 24 views
4

使用嵌套RootElementsMonoTouch.Dialog中创建多级菜单结构很容易,但是您将如何去管理每个根而不是特定的UIViewController?我希望每个RootElement拥有它自己的UIViewController的原因是因为我希望能够轻松控制诸如背景图像之类的内容并将导航栏从屏幕切换到屏幕,并且这样做是在UIViewController之内进行的。对于MonoTouch.Dialog中的每个RootElement都有一个专用的UIViewController?

回答

9

我认为你正在寻找这样的:

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

这让您创建UIViewController(例如,DialogViewController你定制的或从它继承一个类)。

这将让你继续嵌套你的Element同时给予对视图和它的控制器的大部分控制权。

UPDATE

下面是如何这可以用于:

首先声明你的方法将创建的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定制你的喜好在返回之前。

+0

什么是对createOnSelected的代码是什么样子?另外,你在那里“公开”,你的意思是“新”吗? –

+1

不,以上是您应该在您的代码中使用的构造函数声明(来自MonoTouch.Dialog)(通过执行新的操作)。我会更新答案以显示此内容。 – poupou

8

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

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