UIStoryboardSegue 嵌入
Posted
技术标签:
【中文标题】UIStoryboardSegue 嵌入【英文标题】:UIStoryboardSegue embed 【发布时间】:2018-05-14 15:55:14 【问题描述】:在界面构建器中的 UIView(添加为容器视图)中嵌入 segue 究竟是做什么的?我正在尝试以编程方式嵌入 ViewController,因为我想在两个不同的之间进行选择。我想我正确设置了容器视图的限制约束,因为当我在情节提要中添加带有嵌入 segue 的子视图控制器时,一切正常,但是一旦我使用以下代码嵌入它,视图控制器就会与底部约束重叠的容器视图,它弄乱了我的布局..
let viewController = UIStoryboard(name: "Main", bundle: Bundle.main).instantiateViewController(withIdentifier: "MyViewController")
self.containerView.addSubview(viewController.view)
self.addChildViewController(viewController)
NSLayoutConstraint.activate([
viewController.view.leadingAnchor.constraint(equalTo: containerView.leadingAnchor),
viewController.view.trailingAnchor.constraint(equalTo: containerView.trailingAnchor),
viewController.view.topAnchor.constraint(equalTo: containerView.topAnchor),
viewController.view.bottomAnchor.constraint(equalTo: containerView.bottomAnchor)
])
viewController.didMove(toParentViewController: self)
【问题讨论】:
参考***.com/questions/28852338/… 【参考方案1】:感谢@Dinesh Balasubramanian,我现在得到了以下代码:
let viewController = UIStoryboard(name: "Main", bundle: Bundle.main).instantiateViewController(withIdentifier: "MyViewController")
self.containerView.addSubview(viewController.view)
self.addChildViewController(viewController)
viewController.view.frame = containerView.bounds
viewController.didMove(toParentViewController: self)
【讨论】:
不清楚为什么这会比您最初提供的代码更好。自动布局是定位子视图比设置其frame
更好的方法,因此您原始问题中的代码更好。
嗯,这取决于“作品”的概念。如果containerView
的框架发生变化,您的viewController.view
将被留下。最好更具体地说明原始代码有什么问题。顺便说一句,它有一个问题是您以错误的顺序调用addChildViewController
和addSubview
(尽管我怀疑这是问题的原因)。以上是关于UIStoryboardSegue 嵌入的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Mongoose 的嵌入式文档中检索数组的最后一个对象?