0

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

public class PostSummaryElement:StyledMultilineElement,IElementSizing

单击元素的附件时,我想将视图推送到堆栈上。即是这样的:

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

MyDemoController 的 gui 是使用 monotouch.dialog 创建的。

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

任何想法?谢谢。

4

1 回答 1

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);
}
于 2013-01-22T07:39:25.173 回答