如果要在Xamarin中绑定Objective C方法,可以使用ExportAttribute覆盖它。
但是如何调用现在覆盖方法背后的本机代码?
覆盖UIButton的LayoutSublayersOfLayer原生方法的示例:
[Export("layoutSublayersOfLayer:")]
public void LayoutSublayersOfLayer(CALayer layer)
{
// base.LayoutSublayersOfLayer() <-- Any way to do this for bindings?
}
如果不调用此方法的原生基础,UIButton将不会布局它的标题,也不会显示它的图像和内部内容。
任何帮助都非常感谢,因为整个互联网上都没有文档。
答案 0 :(得分:0)
您想在自定义override LayoutSublayersOfLayer
课程中UIButton
并调用基本方法:
public class CustomButton : UIButton
{
public CustomButton() { }
public CustomButton(IntPtr handle) : base(handle) { }
public CustomButton(NSObjectFlag t) : base(t) { }
public override void LayoutSublayersOfLayer(CoreAnimation.CALayer layer)
{
base.LayoutSublayersOfLayer(layer);
}
}
在UIView
班级:
[Export ("layoutSublayersOfLayer:"), CompilerGenerated]
public virtual void LayoutSublayersOfLayer (CALayer layer)
{
UIApplication.EnsureUIThread ();
if (layer == null) {
throw new ArgumentNullException ("layer");
}
if (base.IsDirectBinding) {
Messaging.void_objc_msgSend_IntPtr (base.Handle, Selector.GetHandle ("layoutSublayersOfLayer:"), layer.Handle);
}
else {
Messaging.void_objc_msgSendSuper_IntPtr (base.SuperHandle, Selector.GetHandle ("layoutSublayersOfLayer:"), layer.Handle);
}
}