【发布时间】:2016-06-16 05:39:30
【问题描述】:
这就是我希望应用程序运行的方式。一个人可以在 InterfaceBuilder 上设计他们想要的任何视图。然后在我的代码中,我在界面构建器上将该视图连接到 UICollectionViewCell。
这样,他们自定义创建的视图可以放置在许多 UICollectionViewCells 上。
所以基本上我要问的是:如何在以下条件下为 UICollectionView 设置单元格:
- 程序员将使用界面生成器为单元格创建视图(UIView)
- 程序员不会在界面生成器上使用 UICollectionView 或 UICollectionViewCell。
- 程序员只会在界面构建器上创建一个普通的 UIView,然后我的代码将通过代码将其连接到 UICollectionViewCell。
我正在尝试做的目标是创建一个程序员可以使用的自定义控件。程序员只需要设计 UIView,我的代码会处理其余的。
有什么方法可以从 IB 获取 UIView 并使用代码将其挂接到 UICollectionViewCell 中?我被卡住了。
目前我看到的函数是这个,但我不确定如何将视图链接到 UICollectionViewCell 类。
func registerClass(cellClass: AnyClass?, forCellWithReuseIdentifier identifier: String)
编辑 - 我正在考虑的另一个潜在解决方案是
- 使用 NSKeyedArchiver 制作用户拥有 InterfaceBuilder 的视图的副本。
- 保存该副本
- 使用 NSKeyedUnarchiver 创建副本
但我认为这种方式会很慢。大家有什么好的想法吗?
【问题讨论】:
-
你可以使用 xib 的。您必须继承 UIView,然后必须将该视图加载为集合视图单元格。
-
有趣的问题。我现在考虑的唯一方法是在可重用的 UICollectionViewCell 中创建、添加(使用自动布局)和删除你的 UIView。但这种解决方案存在性能缺陷。
-
@BharatModi 好的,我对此有 1 个问题。该解决方案不允许程序员将 UIView 添加到 IB 对吗?
-
我说的是创建 UIView 的子类,它有单独的 xib,可以根据需要设计视图。
-
您可以使用它从 nib 中获取您的 UIView 子类:
MyViewClass* myViewObject = [[[NSBundle mainBundle] loadNibNamed:@"MyViewClassNib" owner:self options:nil] objectAtIndex:0](不是在 Swift 中,但您可以理解)
标签: ios objective-c swift cocoa-touch uicollectionview