我在 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
我应该如何实现想要的功能呢?
1
shippo7 OP 是不是 vc 之间要写 delegate ,不能直接这样调用?
|
2
shippo7 OP 就是要写 delegate ,都散了吧
|
3
kobe1941 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); |
4
free9fw 2016-04-16 10:56:21 +08:00
frame 重新设置一下
|
5
shippo7 OP @free9fw
我试过手动设置 frame 也是没用的,因为直接用 MainViewController().function 这样不会回到原来的 MainViewController 中,而是生成了一个新的 MainViewController()类,其中的任何组件都没有在视图上初始化,所以 frame 是空的 用正常的方法,两个 View Controller 之间只能通过 delegate 传值 |
6
CommandZi 2016-04-16 17:01:16 +08:00
|
7
CommandZi 2016-04-16 17:01:35 +08:00
|