2016-08-30 2 views
0

Xamarin에서 Objective C 메소드를 바인딩하려면 ExportAttribute를 사용하여이를 재정의하십시오.Xamarin IOS에서 바인딩에서 Objective-C 네이티브 메소드를 호출

그러나 어떻게 현재 재정 의하여 사용되는 방법 뒤에 네이티브 코드를 호출 할 수 있습니까? 있는 UIButton의 LayoutSublayersOfLayer 네이티브 메소드를 오버라이드 (override)

예 :

[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

** LayoutSubayersOfLayer **이고 ** LayoutSubviews가 아니므로 UIView 클래스에는 구현되어 있지 않습니다. – Tylerian

관련 문제