为啥我不能从不同的 ViewController 视图设置视图?
Posted
技术标签:
【中文标题】为啥我不能从不同的 ViewController 视图设置视图?【英文标题】:Why can't I set a view from a different ViewController view?为什么我不能从不同的 ViewController 视图设置视图? 【发布时间】:2015-02-26 19:39:03 【问题描述】:@IBOutlet weak var containerView: UIView!
override func viewDidLoad()
super.viewDidLoad()
let storyboard = UIStoryboard(name: "LinkDetail", bundle: nil)
var vc : UIViewController = storyboard.instantiateViewControllerWithIdentifier("red") as UIViewController
containerView = vc.view
println(vc.view)
我知道我在情节提要中将视图控制器 ID 设置为“红色”。当我 println 的输出是:
<UIView: 0x7fbdc1e5a820; frame = (0 0; 375 667); autoresize = W+H; layer = <CALayer: 0x7fbdc1e491b0>>
所以视图一定是正确的。那么为什么我不能用我从代码中获得的视图来替换我的 containerView UIView 插座呢?
【问题讨论】:
您的 containerView IBOutlet 设置是否正确?视图的限制是什么?尝试设置 containerView 的背景颜色,使其从您的主视图中脱颖而出,并确保它可见并具有适当的大小 containerView.addSuvview(vc.view) 【参考方案1】:这是因为您没有在任何地方持有对 vc
(红色)视图控制器的引用。 containerView
设置为弱,因此没有任何内容会保留设置在其上的视图。
我认为在这种情况下你应该使用Child View Controllers。
使用您的 sn-p,这是您将视图控制器添加为子项的方式:
override func viewDidLoad()
super.viewDidLoad()
let storyboard = UIStoryboard(name: "LinkDetail", bundle: nil)
var vc : UIViewController = storyboard.instantiateViewControllerWithIdentifier("red") as UIViewController
self.addChildViewController(vc)
self.view.addSubview(vc.view)
containerView = vc.view
vc.didMoveToParentViewController(self)
【讨论】:
【参考方案2】:// containerView = vc.view
containerView.addSuvview(vc.view)
【讨论】:
你的意思是containerView.addSubview
和b
?以上是关于为啥我不能从不同的 ViewController 视图设置视图?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我不能同时从 Java 执行不同的 Matlab 函数?