内容简介:首先让我们看一下我们要做的界面效果
对于 UIViewController
瘦身是一个老生常谈的问题,现在也有比较多的架构来实现此效果,比如MVVM等等。不过这次我们是对于传统的MVC架构设计实现完美的瘦身。此方法也完全不妨碍在此基础上使用MVVM等其他方法瘦身。
情景
首先让我们看一下我们要做的界面效果
看着界面不是很难,最上边是二维码扫描;中间输入一些信息,数字1、2、3是按钮点击网络请求然后弹出选择界面供用户选择;最下边历史数据。
其实写下来交互非常的多,接口非常多,业务逻辑也非常的复杂,
传统MVC下来整个.h文件估计至少1500行以上。
瘦身思路
通过上图中的两根红色实现,我们将此界面划分成三部分。则声明四个 UIViewController
:
分别为:
-
ScanViewController
扫描功能 -
InfoInputViewController
输入信息 -
HistoryViewController
历史数据 -
MyViewController
组装功能在
MyViewController
中我们进行组装,并处理一些非业务事件
通过此方法,我们第一步已经成功降低了耦合度,而且在项目中还有更大的一个优点就是 ScanViewController
和 HistoryViewController
两个类可以达到复用的效果,其他功能也需要这两个功能 ,所有的业务逻辑全部在 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中。
下面是我们类结构的设计
以上设计思路其实我有单独写过 《设计模式之感悟和实践(二)》
具体代码文章中也有。
通过此方法既消除了if...else的判断,同时每个点击时间的业务逻辑也就行了单独的封装。
通过以上两个方法的结合成功了将“UIViewController”瘦的简直不能再瘦了!!
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
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》 这本书的介绍吧!