为什么我不能从不同的ViewController视图设置视图?

时间:2015-02-26 19:39:03

标签: ios swift

@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为“红色”。当我打印输出时:

<UIView: 0x7fbdc1e5a820; frame = (0 0; 375 667); autoresize = W+H; layer = <CALayer: 0x7fbdc1e491b0>>

所以视图必须正确。那么为什么我不能用我从代码中获得的视图换出我的containerView UIView插座?

2 个答案:

答案 0 :(得分:0)

这是因为您并未在任何地方持有vc(红色)视图控制器的引用。 containerView设置为弱,因此没有任何内容可以保留在其上设置的视图。

我认为在这种情况下你应该使用Child View Controllers

使用您的代码段,您可以将视图控制器添加为子项:

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)
}

答案 1 :(得分:0)

// containerView = vc.view
containerView.addSuvview(vc.view)