ios - UICollectionView Xamarin.iOS,带按钮的自定义单元格

标签 ios xamarin xamarin.ios uicollectionview

我已经阅读了很多有关 iOS 和 Xamarin.iOS 的 UICollectionView 的教程 每个人都在 UICollectionViewCell 中用一张图片展示了相同的示例教程

期望的输出

具有自定义设计的 UICollectionViewCell GridView

我做了什么

这是我到目前为止所取得的成就..请忽略糟糕的设计:P UICollectionView in Xamarin.iOS

问题

当我点击 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 提示,那就太好了。

最佳答案

解决此问题的一种可能方法是在订阅之前取消订阅事件,这样可以防止多次调用,尤其是当该项目在列表中被回收时。

cell.BookButton.TouchUpInside -= Cell_BookButton_TouchUpInside;
cell.BookButton.TouchUpInside += Cell_BookButton_TouchUpInside;

关于ios - UICollectionView Xamarin.iOS,带按钮的自定义单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34960285/

相关文章:

c# - 使用 UIView.Animate 动画图层不透明度

ios - <b> 标记在 UILabel 属性字符串中不起作用

ios - 延迟加载 CoreData 关系

c# - Xamarin.Android : Add the dynamic menu items to Navigation view of DrawerLayout

c# - MonoTouch 确定性处理单元

ios - 为什么 CLLocationManager 不传递事件来处理?

ios - NSLayoutdString的AutoLayout行高计算错误

ios - 如何动态更改Tableview的自定义单元格宽度?

android - 如何在 Xamarin 中使用 Android 的内部存储?

c# - MvvmCross : conventional plugin bypass