未调用 ItemSelected - Xamarin.iOS F#
Posted
技术标签:
【中文标题】未调用 ItemSelected - Xamarin.iOS F#【英文标题】:ItemSelected not called - Xamarin.iOS F# 【发布时间】:2018-01-30 13:20:37 【问题描述】:我有一个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】:我试过你的代码,找到了解决方法。
修改CollectionViewFlowDelegate
的构造方法如下:
let collectionViewDelegate = new CollectionViewFlowDelegate()
collectionViewDelegate.parent <- x
x.CollectionView.Delegate <- collectionViewDelegate
type CollectionViewFlowDelegate () =
inherit UICollectionViewDelegateFlowLayout ()
【讨论】:
以上是关于未调用 ItemSelected - Xamarin.iOS F#的主要内容,如果未能解决你的问题,请参考以下文章
tableView.rx.itemSelected 中的 RxSwift 双映射
Xamarin 表单 ListView ItemTapped/ItemSelected 命令绑定在 XAML
itemSelected 未在 Xamarin.Android 中触发