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)
生命周期方面也挺智能的,跟着父控制器自动走。像viewWillAppear
、viewDidDisappear
这些方法都能同步调用,不用你操心。
通信上,常用的方式就是协议、闭包、通知。比如子控制器里监听按钮事件,通过闭包回调给父控制器,也挺方便。
不需要的时候,记得用removeFromParent()
清理一下,不然内存占着不放,时间久了还挺影响性能的。
顺带说一句,如果你是用Storyboard
的话,直接拖个Container View
进去,Xcode 会自动帮你关联一个子控制器,图省事的话这招也挺香。
子控制器还能配合UINavigationController
用,比如做类似微信那种多层界面切换的需求,合适。而且你要玩转场动画或者嵌套滚动,Child View Controller
的独立视图层级也更容易控制。
,childViewController.zip
这个资源对 iOS 中高级开发者来说挺有参考价值的。想模块化你的视图结构?它可以作为一个蛮实用的起点。
如果你最近在做复杂页面切换,或者想把大控制器拆成小模块,不妨把这个文件打开看看。
66.35KB
文件大小:
评论区