我正在进行一项练习,并希望将此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>>
上下文 - 是tableview的每一行,包含一个水平滚动的集合视图。通过willDisplayCell为 tableview 中的每一行调用上面的func。例如:
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 ();
}
答案 0 :(得分:0)
void setCollectionViewDataSourceDelegate<D>(
D dataSourceDelegate,
int row)
where D : UICollectionViewDataSource, UICollectionViewDelegate`
我不知道Xamarin Forms中UICollectionViewDataSource, UICollectionViewDelegate
类型的等价物。它们应该是某种界面。