gpt4 book ai didi

ios - 无法将 collectionView 导出添加到 nib 中的 UICollectionViewController

转载 作者:行者123 更新时间:2023-11-28 12:47:08 24 4
gpt4 key购买 nike

我正在尝试以下列方式实例化 UICollectionViewController:

class ViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()
UINib(nibName: "TestController", bundle: nil).instantiateWithOwner(nil, options: nil)
}
}

我的 nib 名为 TestController.xib,包含一个 UICollectionViewController,其中包含一个 UICollectionView。当我在 nib 中添加一个导出 collectionViewUICollectionViewControllerUICollectionView 时,上面的行抛出以下错误:

'NSInvalidArgumentException', reason: 'Can't add self as subview'

可能我的想法有误,但我想不通为什么会出现这个错误。

这是我的 Nib :

enter image description here

编辑:

当我没有在我的 Nib 上添加任何 socket 时,错误消失了。但是我的 UICollectionViewController 中的 collectionViewnil ,如下所示:

public class MyCollectionViewController: UICollectionViewController {

override public func viewDidLoad() {
super.viewDidLoad()

//unwrapping error!
self.collectionView!.backgroundColor = UIColor.blueColor()
}
}

我该如何解决这个问题?

编辑 2:

我在这个简单的 xcode 项目中重现了错误:https://github.com/Damnum/ReproduceControllerBug

最佳答案

发生这种情况的原因是尽管 Interface Builder 将该 Controller 显示为 UICollectionViewController,但到 collectionView 的内部魔术链接已损坏。原因包括

  • 它被创建为不同的 Controller 类型,类被重命名为 UICollectionView
  • 它被创建为 UICollectionView,但该类被编辑为 IB 可识别的其他内容,然后又被编辑回来
  • 有人在背后编辑了 XML 源代码。也许在积极编辑的同时恢复版本控制?
  • IB 崩溃了,感到困惑,或者只是觉得胡思乱想

但正如人们所指出的,在正确构造的 nib 中,collectionView 绝对会在 viewDidLoad 时填充。因此,如果不是,我建议拖出一个新的 Controller 实例并将其丢弃。几乎可以肯定,这比试图弄清楚这个管道是如何以及为什么坏了要快得多。

编辑:

直到旧式 nib 范式在 Swift 中不起作用。谁知道?不是我,我只在 Swift 诞生后才使用 Storyboard。如何在没有 Storyboard的情况下正确加载 UICollectionView 子类作为主视图 is on Github here对于那些遇到同样问题的人。

关于ios - 无法将 collectionView 导出添加到 nib 中的 UICollectionViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37725970/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com