iOS中UIViewController完美瘦身

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

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

对于 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”瘦的简直不能再瘦了!!


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

查看所有标签

猜你喜欢:

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

C程序设计(第四版)

C程序设计(第四版)

谭浩强 / 清华大学出版社 / 2010-6-1 / 33.00元

由谭浩强教授著、清华大学出版社出版的《C程序设计》是一本公认的学习C语言程序设计的经典教材。根据C语言的发展和计算机教学的需要,作者在《C程序设计(第三版)》的基础上进行了修订。 《C程序设计(第4版)》按照C语言的新标准C99进行介绍,所有程序都符合C99的规定,使编写程序更加规范;对C语言和程序设计的基本概念和要点讲解透彻,全面而深入;按照作者提出的“提出问题―解决问题―归纳分析”三部曲......一起来看看 《C程序设计(第四版)》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

SHA 加密
SHA 加密

SHA 加密工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具