UICollectionViewDelegateFlowLayout有一个名为
sizeForItem的方法(MonoTouch中的
GetSizeForItem).
但我没有明确地提供委托 – 相反,我继承自UICollectionViewController.
它混合了数据源和委托功能,但没有这种方法来覆盖.
我尝试将其添加到我的控制器:
- [Export ("collectionView:layout:sizeForItemAtIndexPath:")]
- public virtual SizeF GetSizeForItem (UICollectionView collectionView,UICollectionViewLayout layout,NSIndexPath indexPath)
- {
- return new SizeF (100,100);
- }
它从未被称为.
如何在不诉诸分离委托和数据源的情况下提供此方法?
解决方法
你不能.在Obj-C中,viewcontroller(或任何类)对象可以采用委托协议.这在Monotouch中是不可能的.您给了使用委托实例.但这可以是私人课程
- public class CustomCollectionViewController:UICollectionViewController
- {
- public CustomCollectionViewController():base()
- {
- this.CollectionView.Delegate = new CustomViewDelegate();
- }
- class CustomViewDelegate: UICollectionViewDelegateFlowLayout
- {
- public override System.Drawing.SizeF GetSizeForItem (UICollectionView collectionView,NSIndexPath indexPath)
- {
- return new System.Drawing.SizeF (100,100);
- }
- }
- }