如何将此Swift函数转换为Xamarin.iOS / C#

时间:2016-02-04 06:41:48

标签: c# swift xamarin

我正在进行一项练习,并希望将此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 ();
    }

1 个答案:

答案 0 :(得分:0)

void setCollectionViewDataSourceDelegate<D>(
D dataSourceDelegate, 
int row)
where D : UICollectionViewDataSource, UICollectionViewDelegate`

我不知道Xamarin Forms中UICollectionViewDataSource, UICollectionViewDelegate类型的等价物。它们应该是某种界面。