看起来这应该很容易,但我错过了一些东西。我有一个自定义元素:
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发生某些事情,然后用户导航回包含控件的前一个视图。
有什么想法? 感谢。
答案 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);
}