ItemSelected未调用 - Xamarin.iOS F#

时间:2018-01-30 13:20:38

标签: ios f# xamarin.ios uicollectionview uicollectionviewdelegateflowlayout

我的UICollectionViewController定义如下:

    [<Register ("LandlordHome")>]
type LandlordHome (handle:IntPtr) = 
    inherit UICollectionViewController (handle)


    override x.ViewDidLoad () =
        base.ViewDidLoad ()

        let collectionViewDelegate = new CollectionViewFlowDelegate(new IntPtr())
        collectionViewDelegate.parent <- x

        x.CollectionView.Delegate <- collectionViewDelegate

为清楚起见,我省略了不相关的代码。

接下来,我的UICollectionViewDelegateFlowLayout定义如下:

    [<Register ("CollectionViewFlowDelegate")>]
type CollectionViewFlowDelegate (handle:IntPtr) = 
    inherit UICollectionViewDelegateFlowLayout (handle)

    let mutable parentViewController : UIViewController = null

    member this.parent 
        with get() = parentViewController 
        and set(value) = parentViewController <- value

    override x.ItemSelected(collectionView : UICollectionView, indexPath : NSIndexPath) = 
        let controller = new ChatControllerLandlord(new IntPtr())
        controller.GetListingId <- ""
        controller.GetPartnerId <- ""
        controller.GetLandlordId <- ""
        controller.GetPartnerName <- ""
        parentViewController.PresentViewController(controller,true,null)

这样做是为了覆盖ItemSelected方法,这样当我点击UICollectionViewCell时,会执行其中的代码。

但是,当我点击手机时没有任何反应。

1 个答案:

答案 0 :(得分:1)

我尝试了你的代码,找到了解决方法。

修改CollectionViewFlowDelegate的构造方法,如下所示:

let collectionViewDelegate = new CollectionViewFlowDelegate()
collectionViewDelegate.parent <- x
x.CollectionView.Delegate <- collectionViewDelegate


type CollectionViewFlowDelegate () = 
inherit UICollectionViewDelegateFlowLayout ()