iOS中UIViewController完美瘦身

栏目: IOS · 发布时间: 4年前

内容简介:首先让我们看一下我们要做的界面效果

对于 UIViewController 瘦身是一个老生常谈的问题,现在也有比较多的架构来实现此效果,比如MVVM等等。不过这次我们是对于传统的MVC架构设计实现完美的瘦身。此方法也完全不妨碍在此基础上使用MVVM等其他方法瘦身。

情景

首先让我们看一下我们要做的界面效果

iOS中UIViewController完美瘦身

看着界面不是很难,最上边是二维码扫描;中间输入一些信息,数字1、2、3是按钮点击网络请求然后弹出选择界面供用户选择;最下边历史数据。

其实写下来交互非常的多,接口非常多,业务逻辑也非常的复杂,

传统MVC下来整个.h文件估计至少1500行以上。

瘦身思路

通过上图中的两根红色实现,我们将此界面划分成三部分。则声明四个 UIViewController :

分别为:

  • ScanViewController 扫描功能

  • InfoInputViewController 输入信息

  • HistoryViewController 历史数据

  • MyViewController 组装功能

    MyViewController 中我们进行组装,并处理一些非业务事件

通过此方法,我们第一步已经成功降低了耦合度,而且在项目中还有更大的一个优点就是 ScanViewControllerHistoryViewController 两个类可以达到复用的效果,其他功能也需要这两个功能 ,所有的业务逻辑全部在 InfoInputViewController

self.myScanVC = [[ScanViewController alloc] init];
[self addChildViewController:self.myScanVC];
[self.view addSubview:self.myScanVC.view];
[self.myScanVC didMoveToParentViewController:self];

self.myInforInputVC = [[InfoInputViewController alloc] init];
[self addChildViewController:self.myInforInputVC];
[self.view addSubview:self.myInforInputVC.view];
[self.myInforInputVC didMoveToParentViewController:self];


self.myHistoryVC = [[HistoryViewController alloc] init];
[self addChildViewController:self.myHistoryVC];
[self.view addSubview:self.myHistoryVC.view];
[self.myHistoryVC didMoveToParentViewController:self];

由于 InfoInputViewController 中也有非常多的业务逻辑而且以按钮点击之后开始响应为主。

现在看一下我们的点击事件有多简洁:

- (IBAction)actionClick:(UIButton *)sender {
    [self.view endEditing:YES];
    [self.actionsContext doActionWithLevel:sender.tag];
}

是的没有任何判断,而且我们把所有的业务逻辑均封装在了一个一个的Action中。

下面是我们类结构的设计

iOS中UIViewController完美瘦身

以上设计思路其实我有单独写过 《设计模式之感悟和实践(二)》

具体代码文章中也有。

通过此方法既消除了if...else的判断,同时每个点击时间的业务逻辑也就行了单独的封装。

通过以上两个方法的结合成功了将“UIViewController”瘦的简直不能再瘦了!!


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

An Introduction to Probability Theory and Its Applications

An Introduction to Probability Theory and Its Applications

William Feller / Wiley / 1991-1-1 / USD 120.00

Major changes in this edition include the substitution of probabilistic arguments for combinatorial artifices, and the addition of new sections on branching processes, Markov chains, and the De Moivre......一起来看看 《An Introduction to Probability Theory and Its Applications》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具