0

Objective sharpieを使用してバインディングに問題がほとんどありません.Xamarin.iosでiOSネイティブSDKをバインドしていますIndoorAtlasObjective Sharpieプロトコルを使用したバインディング後xamarin.iOSでメソッドが呼び出されない

Protocolsメソッドが呼び出されないように実装している間に問題が発生します。それを特別な方法で処理する必要がありますか?

API定義ファイルと実装ファイルを添付しています。

// @protocol IALocationManagerDelegate 
[Protocol, Model] 
[BaseType(typeof(NSObject))] 
interface IALocationManagerDelegate 
{ 
    // @optional -(void)indoorLocationManager:(IALocationManager * 
    _Nonnull)manager didUpdateLocations:(NSArray * _Nonnull)locations; 
    [Export("indoorLocationManager:didUpdateLocations:")] 
    void DidUpdateLocations(IALocationManager manager, IALocation[] locations); 


    // @optional -(void)indoorLocationManager:(IALocationManager * 
    _Nonnull)manager didEnterRegion:(IARegion * _Nonnull)region; 
    [Export("indoorLocationManager:didEnterRegion:")] 
    void DidEnterRegion(IALocationManager manager, IARegion region); 
} 

// @interface IALocationManager : NSObject 
[BaseType(typeof(NSObject))] 
interface IALocationManager 
{ 
    [Wrap("WeakDelegate")] 
    [NullAllowed] 
    IALocationManagerDelegate Delegate { get; set; } 

    // @property (readwrite, nonatomic, weak) id<IALocationManagerDelegate> 
    _Nullable delegate; 
    [NullAllowed, Export("delegate", ArgumentSemantic.Weak)] 
    NSObject WeakDelegate { get; set; } 
} 

////のViewController --Callingのデリゲートメソッド

[Export("indoorLocationManager:didUpdateLocations:")] 
public void DidUpdateLocations(IALocationManager manager , IALocation[] locations) 
{ 
    IALocation loc = locations[locations.Length - 1]; 
    if (mFloorPlan != null) 
    { 
     CoreGraphics.CGPoint cg = mFloorPlan.CoordinateToPoint(loc.Location.Coordinate); 
     this.map.Center = cg; 
    } 
} 

[Export("indoorLocationManager:didEnterRegion:")] 
public void DidEnterRegion(IALocationManager manager, IARegion region) 
{ 
    if (region.Type != ia_region_type.FloorPlan) 
     Console.WriteLine("Region Changed to {0} " + region.Identifier); 
    else 
    { 
     FetchFloorPlan(); 
    } 
} 
+0

1.バインドプロジェクトが正常にビルドされましたか?あなたはweakDelegateを使用しているようですが、それを設定しましたか? –

+0

@ColeXiaはいバインディングプロジェクトは、エラーや問題なしで正常に構築されています。私は弱いDelegateを使用しており、APIの定義には弱いです。 – nikheel

+0

弱いデリゲートに現在のビューコントローラを割り当てましたか? 'IALocationManager.WeakDelegate = this' –

答えて

0

は弱いデリゲートにViewControllerをを割り当てることを忘れないでください。

IALocationManager manager = new IALocationManager(); 
manager.WeakDelegate = this; 
関連する問題