需求:APP中有是否允许wifi下加载的开关,如果开关开启状态,点击视频播放时无论网络状态,不用弹窗可以直接播放;如果非wifi网络,需弹窗提示是否允许本次加载。
分析:如果在每个视频点击的事件下都进行判断,然后根据状态处理事件,需要些一堆重复的代码。所有必须要封装成一个工具类(AllowPalyTool);
开始是准备这么做的:
.h文件
/**
根据返回值判断是否允许进行下一步操作
@param VC 需要判断的当前Controller
*/
+ (void)AllowPalyWith:(UIViewController *)VC;
.m文件
+ (BOOL )AllowPalyWith:(UIViewController *)VC{
if ([DetectNetWork CurrentNetWorkType] == 2) {//当前是wifi状态
return YES;
}else if (![KGET_VALUT(K_AllOW_Wifi) boolValue]){//允许非wifi加载
return YES;
}else {
[UIAlertTool showAlertViewAtController:VC title:@"温馨提示" message:@"当前网络为非Wifi状态,是否允许本次播放?" cancelButtonTitle:@"取消" and:UIAlertActionStyleDefault certainButtonTitle:@"允许" and:UIAlertActionStyleDefault cancelClick:^{
?
} certainClick:^{
?
}];
}
?
}
问题:代码中?的地方不能处理!
需求实现:
.h文件
/**
根据allowTypeBlock判断是否允许进行下一步操作
@param VC 需要判断的当前Controller
@param allowTypeBlock 返回BOOL类型
*/
+ (void)AllowPalyWith:(UIViewController *)VC withBlock:(void(^)(BOOL isAllow))allowTypeBlock;
.m文件
+ (void)AllowPalyWith:(UIViewController *)VC withBlock:(void(^)(BOOL isAllow))allowTypeBlock{
if ([DetectNetWork CurrentNetWorkType] == 2) {//当前是wifi状态
allowTypeBlock(YES);
}else if (![KGET_VALUT(K_AllOW_Wifi) boolValue]){//允许非wifi加载
allowTypeBlock(YES);
}else {
[UIAlertTool showAlertViewAtController:VC title:@"温馨提示" message:@"当前网络为非Wifi状态,是否允许本次播放?" cancelButtonTitle:@"取消" and:UIAlertActionStyleDefault certainButtonTitle:@"允许" and:UIAlertActionStyleDefault cancelClick:^{
allowTypeBlock(NO);
} certainClick:^{
allowTypeBlock(YES);
}];
}
}
注释:DetectNetWork:获取网络状态的工具类; UIAlertTool:封装系统弹出的工具类;
网友评论