UICollectionViewCell 中的 SwiftUI 视图

Posted

技术标签:

【中文标题】UICollectionViewCell 中的 SwiftUI 视图【英文标题】:SwiftUI View in UICollectionViewCell 【发布时间】:2020-11-17 01:36:32 【问题描述】:

我有一个 UICollectionView,我正在尝试使用 SwiftUI 设计我的 UICollectionViewCell。我已经看到了两个例子,one 和 two 在他们的 UICollectionViewCell 中以下列方式做到了这一点:

let controller = UIHostingController(rootView: SomeSwiftUIView)
let view = controller.view!
view.translatesAutoresizingMaskIntoConstraints = false
addSubview(view)
NSLayoutConstraint.activate([
    view.leadingAnchor.constraint(equalTo: contentView.leadingAnchor),
    view.topAnchor.constraint(equalTo: contentView.topAnchor),
    view.trailingAnchor.constraint(equalTo: contentView.trailingAnchor),
    view.bottomAnchor.constraint(equalTo: contentView.bottomAnchor)
])

这在视觉上效果很好,但我遇到的一个问题是我没有与 SwiftUI 视图进行用户交互。例如,如果我在 SwiftUI 视图中有一个 Button,则当您点击该按钮时不会执行该操作。如果 List 在 SwiftUI 视图中,则无法滚动该视图。 (我不是想在里面放一个List,这只是一个例子)

关于从这里去哪里有什么建议吗?谢谢!

【问题讨论】:

【参考方案1】:

我通过将视图约束到单元格而不是 contentView 来解决这个问题,现在它工作正常。

NSLayoutConstraint.activate([
    view.leadingAnchor.constraint(equalTo: leadingAnchor),
    view.topAnchor.constraint(equalTo: topAnchor),
    view.trailingAnchor.constraint(equalTo: trailingAnchor),
    view.bottomAnchor.constraint(equalTo: bottomAnchor)
])

正如我所怀疑的,这是一个分层问题。

【讨论】:

以上是关于UICollectionViewCell 中的 SwiftUI 视图的主要内容,如果未能解决你的问题,请参考以下文章

UICollectionViewCell 中的 Outlet 为零

接收关于从其父集合或表视图中删除 UICollectionViewCell(或 UITableViewCell)的通知

UICollectionViewCell 中的 SwiftUI 视图

保存 UICollectionViewCell 进度状态

UITableViewCell 中的 UICollectionViewCell 中的按钮点击操作

UICollectionViewCell 中的按钮