我目前正在通过练习进行操作,并希望将此Swift功能转换为Xamarin.iOS / C#。我会继续努力,但是如果有人可以提供一些帮助,那将是很棒的。
func setCollectionViewDataSourceDelegate
<D: protocol<UICollectionViewDataSource, UICollectionViewDelegate>>
(dataSourceDelegate: D, forRow row: Int) {
collectionView.delegate = dataSourceDelegate
collectionView.dataSource = dataSourceDelegate
collectionView.tag = row
collectionView.reloadData()
}
我无法解决的是Swift中的方法签名如何转换为C#
让我难过的那张招牌贴在妈妈身上。是:
<D: protocol<UICollectionViewDataSource, UICollectionViewDelegate>>
上下文-表视图的每一行都包含一个水平滚动的集合视图。通过willDisplayCell为表格视图中的每一行调用上述函数。例如:
override func tableView(tableView: UITableView, willDisplayCell cell:UITableViewCell,
forRowAtIndexPath indexPath: NSIndexPath) {
//code..
tableViewCell.setCollectionViewDataSourceDelegate(self, forRow: indexPath.row)
}
感谢@Alexey。正在更新需要此信息的其他任何人。将此方法放在自定义单元类中的效果很好(我利用了UICollectionViewDelegate / Datasource可用的接口):
public void SetCollectionViewDataSourceDelegate<T>(T dataSourceDelegate, int row) where T : IUICollectionViewDelegate, IUICollectionViewDataSource
{
collectionView.Delegate = dataSourceDelegate;
collectionView.DataSource = dataSourceDelegate;
collectionView.Tag = row;
collectionView.ReloadData ();
}
最佳答案
void setCollectionViewDataSourceDelegate<D>(
D dataSourceDelegate,
int row)
where D : UICollectionViewDataSource, UICollectionViewDelegate`
不过,我不知道Xamarin Forms中
UICollectionViewDataSource, UICollectionViewDelegate
类型的等效项。它们应该是某种接口。