逻辑复杂的业务代码如何实现有顺序的跳转展示(登录成功后要去摇奖,设置预留信息,修改密码,弹窗警告......等等)
来源:互联网 发布:巨人网络回归a股涨多少 编辑:程序博客网 时间:2024/05/21 19:55
在登录成功后要展示预留信息,要判断有木有摇奖(如果没有摇奖权限或在摇奖页面点的取消),判断是不是黑名单账户(不是黑名单,黑名单信息展示完成后),有木有开通手机银行,是否需要强制设置预留信息,是否强制修改简单密码,是否提示推送弹框,是否展示手势弹框。有的需要view的展示,有的需要控制器的推入,有的需要警告框,点警告框跳控制器。推送的警告框如果没展示要直接展示手势的警告框,如果推送的警告框展示但点击的是上面的取消按钮,也要展示手势的。 这一大堆流程已经让人头疼。如何使其顺序执行也很复杂。在这里使用封闭判断每个逻辑然后暴露出block接口,继续走下面的流程。
我们拿三个来举例:摇奖(包含取消按钮),强制预留信息(直接进vc),手势弹框
1.将这三个元素,不管是页面还是弹框都定义为一个NSObject
//// ElementObject.h// UniversalJumpDemo//// Created by yfc on 2017/6/23.// Copyright © 2017年 yfc. All rights reserved.//#import <Foundation/Foundation.h>#import <UIKit/UIKit.h>typedef void(^PublicBlock)(id result);@interface ElementObject : NSObject- (instancetype)initWithController:(UIViewController*)controller parameterOne:(NSString *)parameterOne parameterTwo:(NSString *)parameterTwo block:(PublicBlock)block;- (void)toRemoveWaring;@end
//// ElementObject.m// UniversalJumpDemo//// Created by yfc on 2017/6/23.// Copyright © 2017年 yfc. All rights reserved.//#import "ElementObject.h"#import <Foundation/Foundation.h>@implementation ElementObject- (instancetype)initWithController:(UIViewController*)controller parameterOne:(NSString *)parameterOne parameterTwo:(NSString *)parameterTwo block:(PublicBlock)block;{ self = [super init]; if (self) { } return self;}- (void)toRemoveWaring;{ }@end
2在initWithController:parameterOne:parameterTwo:block:这个方法里再具体判断
为简便起见parameterOne用来表示不同的Element,parameterTwo表示需要的参数
关键代码
- (void)btnClicked:(UIButton *)btnn{ // //我们拿三个来举例:摇奖(包含取消按钮),强制预留信息(直接进vc),手势弹框 // NSString *isDrawLottery = @"YES";//是否摇奖 NSString *mustSetTip = @"YES";//是否强制设置信息 NSString *isShowAlertView = @"YES";//是否展示弹框 //第一步 判断摇奖 ElementObject *drawLotteryObj = [[ElementObject alloc]initWithController:self parameterOne:@"DrawLottery" parameterTwo:isDrawLottery block:^(id result) { //第二步 判断预留信息 ElementObject *mustSetTipObj = [[ElementObject alloc]initWithController:self parameterOne:@"SetTip" parameterTwo:mustSetTip block:^(id result) { //第三步 判断弹框 ElementObject *showAlertViewObj = [[ElementObject alloc]initWithController:self parameterOne:@"isShowAlertView" parameterTwo:isShowAlertView block:^(id result) { }]; [showAlertViewObj toRemoveWaring]; }]; [mustSetTipObj toRemoveWaring]; }]; [drawLotteryObj toRemoveWaring]; }
//摇奖判断 if([parameterOne isEqualToString:@"DrawLottery"]){ if ([parameterTwo isEqualToString:@"YES"]) { //结束流程去摇奖页面并且登录标记记为yes DrawLotteryViewController *drawLotteryViewController = [[DrawLotteryViewController alloc]init]; [controller.navigationController pushViewController:drawLotteryViewController animated:YES]; }else{ block(@""); } } //判断预留 else if ([parameterOne isEqualToString:@"SetTip"]){ if ([parameterTwo isEqualToString:@"YES"]) { MustSetTipViewController *mustSetTipViewController = [[MustSetTipViewController alloc]init]; [controller.navigationController pushViewController:mustSetTipViewController animated:YES]; [mustSetTipViewController setBackActionBlock:^(id result) { block(@""); }]; }else{ block(@""); } } //判断弹框 else if ([parameterOne isEqualToString:@"isShowAlertView"]){ if ([parameterTwo isEqualToString:@"YES"]) { UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"成功走完所有流程" message:@"" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; [alertView show]; }else{ block(@""); } }
demo下载地址 https://pan.baidu.com/s/1miG8vpA
阅读全文
0 0
- 逻辑复杂的业务代码如何实现有顺序的跳转展示(登录成功后要去摇奖,设置预留信息,修改密码,弹窗警告......等等)
- 应对复杂的业务逻辑
- Django框架之views(业务逻辑)简单后台首页展示的业务逻辑详细描述
- 复杂业务逻辑注意的几个点
- 复杂业务逻辑下的合理遍历
- redis如何修改登录密码?设置的密码为什么无效?以及如何更改端口?
- 怎样修改角色登录成功的跳转的页面
- Latex的复杂插图设置(并排、竖排等等)
- 实现登录成功后跳转到登录前的页面
- 忘记mysql的登录密码如何修改
- JavaScript调用OC代码调试问题、页面复杂跳转逻辑警告处理
- 登录记住密码的逻辑
- 【iOS】一种应用登录和退出跳转逻辑的实现
- iOS APP登录的业务逻辑
- JSF如何实现onblur后的复杂校验逻辑
- (5)业务逻辑的实现:数据如何处理
- ecshop 登录注册信息提示页面的跳转时间设置
- Yii成功失败提示信息跳转的实现
- JQuery select option用法
- hash实例讲解
- Linux#Shell#密码生成脚本
- 队列的c代码实现
- 指针_三种方式访问成员、动态内存分配【就当做笔记了】*
- 逻辑复杂的业务代码如何实现有顺序的跳转展示(登录成功后要去摇奖,设置预留信息,修改密码,弹窗警告......等等)
- Create Shortcut for windows 10 Universal Apps
- JAVA学习日记----------容器的扩展
- HBase笔记-1.基本介绍
- Android滚轮选择控件 , 包含3D 效果, 滑动流畅无比
- groovy mvn
- Tomcat单机多实例
- 【安全牛学习笔记】Web扫描器(2)
- 【KF8V111控制器】PWM模块配置