ChildViewController iOS子控制器封装方案

iOS 界面的模块化,Child View Controller绝对算个老熟人了。你要做复杂的界面结构,尤其多个页面嵌套,光靠一个控制器搞定其实挺吃力的。childViewController.zip里有一套还不错的实现思路,包含初始化、生命周期同步、通信方式等,挺全面。

addChild(_:) + containerView的方式,把子控制器嵌进去,逻辑上就能更清晰分层。像这样:

let childVC = storyboard?.instantiateViewController(withIdentifier: "ChildViewController") as! ChildViewController
addChild(childVC)
childVC.view.frame = containerView.bounds
containerView.addSubview(childVC.view)

生命周期方面也挺智能的,跟着父控制器自动走。像viewWillAppearviewDidDisappear这些方法都能同步调用,不用你操心。

通信上,常用的方式就是协议、闭包、通知。比如子控制器里监听按钮事件,通过闭包回调给父控制器,也挺方便。

不需要的时候,记得用removeFromParent()清理一下,不然内存占着不放,时间久了还挺影响性能的。

顺带说一句,如果你是用Storyboard的话,直接拖个Container View进去,Xcode 会自动帮你关联一个子控制器,图省事的话这招也挺香。

子控制器还能配合UINavigationController用,比如做类似微信那种多层界面切换的需求,合适。而且你要玩转场动画或者嵌套滚动,Child View Controller的独立视图层级也更容易控制。

childViewController.zip这个资源对 iOS 中高级开发者来说挺有参考价值的。想模块化你的视图结构?它可以作为一个蛮实用的起点。

如果你最近在做复杂页面切换,或者想把大控制器拆成小模块,不妨把这个文件打开看看。

zip 文件大小:66.35KB