2016-08-30 9 views
0

XamarinでObjective Cメソッドをバインドする場合は、ExportAttributeを使用してオーバーライドします。Objective-CネイティブメソッドをXamarin iOSでのバインドから呼び出します。

しかし、今オーバーライドされたメソッドの背後にあるネイティブコードをどのように呼び出すことができますか? UIButtonのLayoutSublayersOfLayerネイティブメソッドをオーバーライド

例:

[Export("layoutSublayersOfLayer:")] 
public void LayoutSublayersOfLayer(CALayer layer) 
{ 
    // base.LayoutSublayersOfLayer() <-- Any way to do this for bindings? 
} 

この方法の本来のベースを呼び出すことなくUIButtonはそれがタイトルだも、それは画像と内部のもののレイアウトはありません。

インターネット全体に関する文書がないので、どんな助力も本当に感謝しています。

答えて

0

カスタムUIButtonクラスでoverride LayoutSublayersOfLayerにしたいと基本メソッドを呼び出します。それはUIButtonに定義されていないとして、あなたはそれを直接上書きすることはできません

[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); 
    } 
} 
+0

UIViewクラスで

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); } } 

をクラスもバッキングクラスもありません。 – Tylerian

+0

@タイメリア?はい、バッキングメソッドは 'UIView'で定義されています:' UIButton' - > 'UIControl' - >' UIView' – SushiHangover

+0

メソッドは** LayoutSublayersOfLayer **で、** LayoutSubviewsではなく** UIViewクラスで実装されていません – Tylerian

関連する問題