我在 MainViewController 中有一个 UIContainerView 已经加载 aViewController ,我想在 aViewController 中点击一个按钮后, UIContainerView 显示 bViewController 。
已经有如下代码: MainViewController.swift:
func showContentController( content: UIViewController ) {
    addChildViewController( content )
    content.view.frame = containerView.frame;
    view.addSubview( content.view )
    content.didMoveToParentViewController(self)
}
func hideContentController( content: UIViewController ) {
    content.willMoveToParentViewController(nil)
    content.view.removeFromSuperview()
    content.removeFromParentViewController()
}
aViewController.swift:
@IBAction func pushButton(sender: UIButton) {
    OffersMainViewController().hideContentController(self)
    let storyboard = UIStoryboard(name: "StoryboardID", bundle: nil)
    var vc: UIViewController = storyboard.instantiateViewControllerWithIdentifier("bViewController") as UIViewController
    OffersMainViewController().showContentController(vc)
}
这是点击按钮会报错, containerView.frame 的值为 nil
我应该如何实现想要的功能呢?
|  |      1shippo7 OP 是不是 vc 之间要写 delegate ,不能直接这样调用? | 
|  |      2shippo7 OP 就是要写 delegate ,都散了吧 | 
|  |      3kobe1941      2016-04-16 09:18:47 +08:00 swift 不清楚, OC 里边有个这样的方法: - (void)transitionFromViewController:(UIViewController *)fromViewController toViewController:(UIViewController *)toViewController duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options animations:(void (^ __nullable)(void))animations completion:(void (^ __nullable)(BOOL finished))completion NS_AVAILABLE_IOS(5_0); | 
|  |      4free9fw      2016-04-16 10:56:21 +08:00 frame 重新设置一下 | 
|  |      5shippo7 OP @free9fw  我试过手动设置 frame 也是没用的,因为直接用 MainViewController().function 这样不会回到原来的 MainViewController 中,而是生成了一个新的 MainViewController()类,其中的任何组件都没有在视图上初始化,所以 frame 是空的 用正常的方法,两个 View Controller 之间只能通过 delegate 传值 | 
|  |      6CommandZi      2016-04-16 17:01:16 +08:00 | 
|  |      7CommandZi      2016-04-16 17:01:35 +08:00 |