我对Monotouch并不熟悉,但在我遥远的过去,我做过一些目标C。我正努力想出如何做以下几件事:
我试图解决的是如何从UIPopOver中放置的视图中获取委托/事件,以便将它的事件发送回调用视图。
在目标C中,在视图中设置调用中的委托,如下所示:
UIPopoverController *popover =
[[UIPopoverController alloc] initWithContentViewController:myPopOverViewcontrol];
popover.delegate = self;那么在Monotouch,你是怎么做到的呢?如果像这样设置UIPopOver:
UIPopoverController myPopOver = new UIPopoverController(new myPopOverViewControl());
myPopOver.PopoverContentSize = new SizeF(200f, 300f);
myPopOver.PresentFromRect (btnButton.Frame, v, UIPopoverArrowDirection.Up, true);你是如何委派代表的?
谢谢
麦克
发布于 2012-07-12 14:13:49
您可以从三种样式中选择:(a) C#事件样式、(b)强类型/代码完成感知样式和(c)动态样式。
C#事件样式如下所示:
popover.DidDismiss += (sender, args) {
Console.WriteLine ("Dismissed!");
}如果使用上述方法,则必须只对该对象使用C#事件,不能在同一对象中混合和匹配。
强类型/代码完成感知样式是:
popover.Delegate = new MyUIPopoverControllerDelegate ();
[...]
class MyUIPopoverControllerDelegate : UIPopoverControllerDelegate {
public override void DidDismiss (UIPopoverController popoverController);
}动态样式不执行参数检查,也不会警告您出错,并且非常类似于在目标C中所做的操作。您还需要手动确定从Objective选择器到方法的绑定:
popover.WeakDelegate = this;
[...]
[Export ("popoverControllerDidDismissPopover:")]
void dismissed (UIPopoverController controller)
{
Console.WriteLine ("Dismissed");
}发布于 2012-07-12 12:26:35
在MonoTouch中,您可能会附加到DidDismiss事件:
var pop = new UIPopoverController();
pop.DidDismiss += (sender, args) => Console.WriteLine("Popover '{0}' was dismissed", (UIPopoverController)sender);
pop.PresentFromBarButtomItem(...);https://stackoverflow.com/questions/11451513
复制相似问题