【问题标题】: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)

标签: ios swift


【解决方案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.addSubviewb
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-10
    • 1970-01-01
    • 2011-09-30
    • 2017-12-01
    • 2014-06-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多