Monotouch.Dialog - 如何从元素推送视图

时间:2013-01-21 23:30:40

标签: ios xamarin.ios monotouch.dialog

看起来这应该很容易,但我错过了一些东西。我有一个自定义元素:

public class PostSummaryElement:StyledMultilineElement,IElementSizing

单击元素的附件时,我想将视图推入堆栈。即像这样的东西:

this.AccessoryTapped += () => {
    Console.WriteLine ("Tapped");
    if (MyParent != null) {
    MyParent.PresentViewController(new MyDemoController("Details"),false,null);
            }
};

使用monotouch.dialog创建MyDemoController的gui。

我只是试图将gui分解为Views和Controlls,其中一个控件可以将视图推送到堆栈,wiat发生某些事情,然后用户导航回包含控件的前一个视图。

有什么想法? 感谢。

1 个答案:

答案 0 :(得分:0)

我建议您不要在AccessoryTapped方法中硬编码行为,因为您希望在项目的其他位置使用该组件的那一天非常接近。并且可能在最近的将来你需要一些其他的行为,或者例如它将是没有MyDemoController的另一个项目。
所以我建议你创建以下属性:

public Action accessoryTapped;

在你的元素及其视图中,然后修改你的AccessoryTapped就是这样:

this.AccessoryTapped += () => {
    Console.WriteLine ("Tapped");
    if (accessoryTapped != null) {
        accessoryTapped();
    }
};

因此,您需要以下列方式创建PostSummaryElement对象:

var myElement = new PostSummaryElement() {
  accessoryTapped = someFunction,
}
...
void someFunction()
{
    NavigationController.PushViewController (new MyDemoController("Details"), true);
}