私は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に購読することは可能ですか?もしそうなら、私は何をしていないのですか?