极致框架大大简化了iOS新项目构建项目基本框架的过程。
从上一篇文章我们看到,极致框架已经具备了一般项目的基本架构,从各种用途的目录的组织,到各种用途的文件的组织,正是这些经过长时间考验过的架构,让我们在着手项目开发的一开始,就能马上投入到需求开发中去。
对于一些基本工具的封装,一方面易于一些特性的快速可靠的实现,另一方面通过隐藏一部分功能的实现细节,基层的开发者无需关心这些基础功能的实现细节从而能专注开发需求内容。在代码可读性和可维护性也大大提高了。
这一期我们主要探究下基类封装的实现,从而了解到极致框架是如何提高开发效率,获得极致开发快感的。
1、导航控制器基类(EFBaseNavigationController):
这个基类其实没什么好集成的,导航控制器其实是一个容器,管理从一个控制器显示另一个控制器从而能很好的展示先后控制链关系。
如果作为弹出的常规控制器或表格控制器(通常也被称为控制器外部调用,例如:通讯录、登录页的外部调用),我们一般会将其首个控制器作为导航控制器的根。通过使用 originalViewController可以非常方便地对控制器外部调用方进行操作。
2、常规控制器基类(EFBaseViewController):
上面说到导航控制器可以管理从一个控制器显示另一个控制器,通过使用 previousViewController可以非常方便地在后显示出来的控制器中对前一个控制器进行操作。
友情提示:通过 storyboard来管理界面是一种非常好的视图管理方式,其独有的 segue连线方式可以清晰的展示视图间的控制链关系。通过 segue来管理从一个控制器显示另一个控制器或者外部调用另一个控制器,而无需对控制器或导航的 previousViewController或者 originalViewController手动干预,就能非常方便地对控制链两端的控制器进行控制,因为极致框架在基类很好的自动处理了这个问题。基于这个原因,我们更推荐 storyboard的 segue管理方式来管理视图,而不是.xib和代码方式。
3、表格控制器基类(EFBaseTableViewController):
除了常规控制器基类的特性,表格控制器基类还支持下拉刷新、上拉加载更多,和无数据显示。
通过 refreshEnabled和实现"refresh"selector来启用下拉刷新,此外还额外支持了通过启用 MJRefreshEnabled和实现 refreshHeader、 refreshFooter的回调来启用下拉刷新、上拉加载更多操作。
通过 showNoData和 hideNoData方法来开启和关闭无数据显示,通过使用 noDataText 自定义无数据显示文字。
后期,还会将这些特性拓展到常规控制器的UITableView上面。
一个非常简单而初见成效的极致框架,Are you ready?