我已经为iOS和Xamarin.iOS阅读了许多针对UICollectionView的教程 每个人都在UICollectionViewCell
中显示了一个相同的示例教程所需的输出
我做了什么
问题
当我点击Book按钮时,它会多次触发事件。奇怪的是它不一致,有时只会触发一次两次或一次三次或其他......
代码段
List<MeetingRoom> data = new List<MeetingRoom>();
async public override void ViewDidLoad()
{
base.ViewDidLoad();
data = await DashboardServices.getMeetingRooms(DateTime.Now);
MeetingRoomCollection.WeakDataSource = this;
}
public nint GetItemsCount(UICollectionView collectionView, nint section)
{
var count = data.Count;
return count;
}
public UICollectionViewCell GetCell(UICollectionView collectionView, NSIndexPath indexPath)
{
var cell = (MeetingRoomCell)collectionView.DequeueReusableCell("cell", indexPath);
cell.RoomName.Text = data[indexPath.Row].Room_Name;
cell.Status.Text = data[indexPath.Row].Availability;
cell.BookButton.Tag = indexPath.Row;
cell.BookButton.TouchUpInside += Cell_BookButton_TouchUpInside;
return cell;
}
void Cell_BookButton_TouchUpInside(object sender, EventArgs e)
{
var x = sender as UIButton;
Debug.WriteLine("index : {0}, status : {1}", (int)x.Tag, data[(int)x.Tag].Availability);
this.PerformSegue("segue_bookRoom", this);
}
请提出建议需要采取哪些措施来解决此问题,我们将非常感谢您对可用教程的任何参考。如果Xamarin.iOS暗示那里会很棒..
答案 0 :(得分:2)
解决此问题的一种可能方法是在订阅之前取消订阅事件,这样可以防止多次调用,尤其是如果此项目在列表中回收。
cell.BookButton.TouchUpInside -= Cell_BookButton_TouchUpInside;
cell.BookButton.TouchUpInside += Cell_BookButton_TouchUpInside;