
我在 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)transitionFromViewCntroller:(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 |