如何将这个 Swift 函数翻译成 Xamarin.iOS/C#
本文关键字:Xamarin iOS 翻译 函数 Swift | 更新日期: 2023-09-27 18:33:06
我目前正在做一个练习,并希望将这个 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>>
上下文 - 是表视图的每一行都包含一个水平滚动的集合视图。上面的 func 通过 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 窗体中UICollectionViewDataSource, UICollectionViewDelegate
类型的等效项。它们应该是某种接口。