我阅读了很多Stackoverflow,但我无法弄清楚如何去做。
我将UIViewController
添加到UICollectionViewCell
,其中包含四个不同的单元格,其中一个单元格的视图非常复杂,数据也在不断变化,因此我想为此添加一个控制器图。
由于没有UIViewController
,我无法弄清楚如何将addChildViewController
添加到单元格。
我的ViewController:
class ViewController1: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
我的CollectionViewCell:
class CollectionViewCell1: UICollectionViewCell {
lazy var viewController: ViewController1 = {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: "ViewController1") as! ViewController1
return vc
}()
override init(frame: CGRect) {
super .init(frame: frame)
print("Initiatetd")
setUpViews()
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been impemented")
}
func setUpViews() {
addSubview(viewController.view)
let views: [String: Any] = ["viewController": viewController]
addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|[viewController]|", options: [], metrics: nil, views: views))
addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|-[viewController]-|", options: [], metrics: nil, views: views))
}
}
我收到此错误:
由于未捕获的异常而终止应用 ' NSInvalidArgumentException',原因:' - [App。 ViewController1 nsli_superitem]:发送到实例的无法识别的选择器 0x7fb08df28ea0'
答案 0 :(得分:0)
您无法将视图控制器添加到这样的单元格中。为了做你想做的事,你需要使用容器视图。文档说:
容器视图定义视图控制器的视图子图中可包含子视图控制器的区域。
只需将容器视图添加到您的单元格(来自故事板)。
要将容器视图连接到View Controller(您有单元格),您需要创建一个嵌入segue。要在prepare(forSegue:)
中向View Controller发送数据,请检查目的地并执行所需操作。