2016-07-29 11 views
0

私はUICollectionViewで再利用可能なセルを使用しています。したがって、複数のイベントの発生を避けるために、各セルのボタンのイベントハンドラを購読および登録解除する必要があります。私が理解しているように、ラムダ式を使ってパラメータをハンドラに簡単に渡すことはできますが、それは脱退を意味しません。UIButton.TouchUpInsideに割り当てるハンドラで、どのようにCustomEventArgsを使用しますか?

internal class CustomEventArgs : EventArgs 
{ 
    public DetailCell Cell {get; private set; } 

    public int Position { get; private set; } 

    public CustomEventArgs(DetailCell cell, int position) 
    { 
     this.Cell = cell; 
     this.Position = position; 
    } 
} 

そして私は、セルは、以下のオーバーライドで作成されると、これに加入しよう:

は、だから私はCustomEventArgsのクラスを作成しました

public override void WillDisplayCell(UICollectionView collectionView, UICollectionViewCell cell, NSIndexPath indexPath) 
    { 
     var cell = cell as DetailCell; 
     if (cell != null) 
     { 
      var eventArgs = new CustomEventArgs(cell, (int)indexPath.Item); 
      cell.EditButton.TouchUpInside += OnEditClicked(this, eventArgs); 
     } 
    } 

しかし、私は取得していますvoid OnEditClickedメソッドをSystem.EventHandlerに変換できないというコンパイルエラー。私はEventHandlerにOnEditClickedの戻り値の型を設定しようとしていますが、それが正しいとは確信していません。もしそうなら、私は何を返すのか分かりません。

私の知るところにはギャップがあり、ここには簡単な修正があると確信しています。私がやっているやり方でTouchUpInsideに購読することは可能ですか?もしそうなら、私は何をしていないのですか?

答えて

0

少し遅れていますが、イベントハンドラを追加する方法は機能していません。コードは次のようになります:cell.EditButton.TouchUpInside += OnEditClicked;。そうすれば、それは再びコンパイルされます。 OnEditClickedメソッドの中で、送信者をDetailCellにキャストできます。カスタムEventArgsを作成する代わりに、カスタムセルを変更する必要があります。

関連する問題