我现在正在做一个练习,想将此 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>>
上下文 - 表格 View 的每一行都包含一个水平滚动的 Collection View 。通过 willDisplayCell 为 tableview 中的每一行调用上面的函数。例如:
override func tableView(tableView: UITableView, willDisplayCell cell:UITableViewCell,
forRowAtIndexPath indexPath: NSIndexPath) {
//code..
tableViewCell.setCollectionViewDataSourceDelegate(self, forRow: indexPath.row)
}
感谢@Alexey。为需要此信息的其他人进行更新。放置在自定义单元类中的此方法效果很好(我使用了 UICollectionViewDelegate/Datasource 可用的接口(interface)):
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
类型的等效项。它们应该是某种接口(interface)。
关于c# - 如何将此 Swift 函数转换为 Xamarin.iOS/C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35194179/