DSBaseViewController 1.5.2

DSBaseViewController 1.5.2

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布上次发布2020 年 5 月

Will Han 维护。



DSBaseViewController

CI Status Version License Platform

是什么

'DS' 前缀代表数据状态(Data State),也代表我的团队名称 Dragon Source。DSBaseViewController 为 UIViewController 的子类提供了方便,以维护子视图的构建和数据源管理,它通过重写 UIViewController 的方法扩展了一个核心协议,对于符合协议的子类,将会得到美丽的魔力。

为什么

我看到了很多开发者在他们的项目中写了一些有趣的代码,例如,为视图控制器构建一系列子视图,为视图控制器加载数据(从网络),常见的解决方案是创建一些如 - (void)configUI- (void)loadData 的方法,并在 viewDidLoad 中调用它们。这对于一个示例项目来说是可以的,但对我来说,这不是团队项目。

长期考虑团队项目的维护,假设有几个开发者在项目中一起工作,每个人都有他自己的命名规则。会有很多方法为视图控制器构建子视图,比如 - (void)configUI- (void)setupUI- (void)buildSubviews 等。这是很可怕的!这是一个没有规则的世界。

如何

DSBaseViewController类为父类,通过协议BuildViewDelegate外部声明了UIViewController的原生方法。

- (void)buildSubview:(UIView *)containerView controller:(DSBaseViewController *)viewController

用于为视图控制器构建子视图。

- (void)loadDataForController:(DSBaseViewController *)viewController

用于加载视图控制器的数据。

- (void)tearDown:(DSBaseViewController *)viewController

用于卸载视图控制器的数据。

- (BOOL)shouldInvalidateDataForController:(DSBaseViewController *)viewController

用于标记数据有效状态以加载视图控制器的数据。

所有这些代理方法都将自动在视图控制器的生命周期中调用。从技术上来说,它们不应当在子类视图控制器的内部实现中直接调用。这是上帝,规则!

然而,这还不是编写漂亮代码(结构)的完美方式。我们需要更多的命名规则,更多的道德

  1. 使用#pragma mark -为委托、公共方法、私有方法、类开始部分标记。
  2. 强制执行#pragma mark -的顺序,比如这样
  3. 使用前缀'_'定义私有方法,如"_refreshDataForView:"。

示例

要运行示例项目,首先将仓库克隆,然后从示例目录运行pod install

安装

DSBaseViewController可以通过CocoaPods获得。要安装它,只需将以下行添加到您的Podfile中

pod "DSBaseViewController"

作者

韩屹,[email protected]

授权

DSBaseViewController可在MIT授权下使用。有关更多信息,请参阅LICENSE文件。