如何处理collectionViewcell,Xamarin表单,iOS中项目的点击/点击事件

时间:2018-03-23 08:28:42

标签: ios forms xamarin xamarin.ios

我们正在使用xamarin表单应用。在主页上,我们有一个新闻列表,点击任何有关新闻详情的新闻。

现在我们要在主页的每一行添加一个共享图标,以便点击它我们可以打开一个弹出对话框。

我们在处理现有的ios实施时遇到了问题。

我们有以下实施:

我们正在使用collectionview,在为collectionview加载单元格时,我们正在使用在C#中开发的customcell(xamarin表单项目)

所以collectionview的customcell是类型的, ItemCustomcell:Fastgridcell

并返回一个RelativeLayout,其中包含一个Button和一个Label。

现在我们面临的问题是,如何处理单元格内任何项目的事件。

例如,我们在自定义单元格的常用模板中添加了一个按钮,那么我们如何才能获得此按钮的点击事件?

如果我需要提供更多详细信息,请与我们联系。

此致 Koushik Ganguly

1 个答案:

答案 0 :(得分:0)

首先在Fastgridcell中定义一个事件:

public delegate void BtnDidClickDelegate(MyCollectionViewCell cell);
public event BtnDidClickDelegate BtnDidClickEvent;

点击Fastgridcell中的按钮时会触发此事件:

partial void BtnClick(UIKit.UIButton sender)
{
    BtnDidClickEvent(this);
}

然后在ViewController中注册此事件,放置您的collectionview:

public UICollectionViewCell GetCell(UICollectionView collectionView, NSIndexPath indexPath)
{
    MyCollectionViewCell cell = collectionView.DequeueReusableCell("Cell", indexPath) as MyCollectionViewCell;

    cell.BtnDidClickEvent += Cell_BtnDidClickEvent;

    return cell;
}
private void Cell_BtnDidClickEvent(MyCollectionViewCell cell)
{
    NSIndexPath selectedIndexPath = MyCollection.IndexPathForCell(cell);
    // In this way, we can get the indexpath which cell's button clicks
}

如果您想将此参数传输到表单,请使用事件或MessagingCenter来实现此目的。