2016-05-24 14 views
0

xamarin.ios delegateのクラスを作成する際に問題があります。 iOSではデリゲートを実装するためにプロトコルを使用しますが、ここではInterfaceをデリゲートとして実装することはできません。 このコンセプトをクリアしましょう。今Xamarin.iOSの代理人

public class ShowList: SendBackDelegate 
{ 
    public ShowList() 
    { 
     SelectList obj = new SelectList(); 
     obj.delegate = this; 
    } 
    void sendBackData() 
    { 
     Console.WriteLine("Send Back DATA"); 
    } 
} 

あなたは、このインターフェイスは、SelectListのクラスで実装する方法を教えてくださいすることができ:私はこのようなメインクラスを持っている他のファイルで

public interface SendBackDelegate 
{ 
    void sendBackData(); 
} 

public class SelectList 
{ 

} 

: 私のような一つのファイルにインターフェイスを持ちます?私はXamarin.iOSにもうデリゲートを使用していない

おかげ

答えて

0

。私はしかし、アクションを使用することを好む。

class MainClass 
{ 
    public static void Main (string[] args) 
    { 
     var x = new ShowList(); 
    } 
} 

public interface SendBackDelegate 
{ 
    void sendBackData(); 
} 

public class ShowList : SendBackDelegate 
{ 
    public ShowList() 
    { 
     SelectList obj = new SelectList (sendBackData); 
    } 

    public void sendBackData() 
    { 
     Console.WriteLine ("Send Back DATA"); 
    } 
} 

public class SelectList 
{ 
    Action _callback; 

    public SelectList (Action callback) 
    { 
     _callback = callback; 
     Ticker(); 
    } 

    private void Ticker() 
    { 
     _callback(); 
    } 
} 
1

あなたはプロトコルのようなインターフェイスを使用することができ、唯一のあなたはそれがすでにインターフェイスメソッドを実装したクラスのオブジェクトを所有できるインターフェイスの参照オブジェクトを作成する必要があります。それはあなたの例でも明らかになります。

public interface SendBackDelegate 
{ 
    void sendBackData(); 
} 

public class SelectList 
{ 
    ShowList showListObj = new ShowList(); 
    SendBackDelegate delegate = showListObj; 
    delegate.sendBackData(); 
    //this will call the method sendBackData() of class ShowList.  
}  

public class ShowList: SendBackDelegate 
{ 
    public ShowList() 
    { 
     SelectList obj = new SelectList(); 
     obj.delegate = this; 
    } 
    void sendBackData() 
    { 
     Console.WriteLine("Send Back DATA"); 
    } 
} 

あなたはまだ質問がある場合は私に知らせてください。