iOS彩票项目--第六天,运用MVC思想搭建设置界面(非storyboard方法)

2023-04-28,,

一、我只想说封装的思想很重要,MVC的思想也很重要,利用MVC思想搭建一下的界面

先说显示出来的cell,有三种(图中的两种,还有一种是最普通的,没有图片的),这种显示不同的cell,交给模型来处理,模型中的数据决定了要显示的样式。
但是有考虑到功能的不一样,所以运用了面向对象的思想,同时继承自cell,实现具体到每一种会有单独的样式和功能。
不同的样式只要根据类名来判断,展示不同的效果。

    

初始化cell,通过类名来判断是带箭头的cell还是带开关的cell

 @interface ChaosSettingCell ()
/** arrow */
@property(nonatomic,strong) UIImageView *arrowView;
/** switch */
@property(nonatomic,strong) UISwitch *switchView;
@end
@implementation ChaosSettingCell - (UIImageView *)arrowView
{
if (_arrowView == nil) {
_arrowView = [[UIImageView alloc]initWithImage: [UIImage imageNamed:@"arrow_right"]];
}
return _arrowView;
} - (UISwitch *)switchView
{
if (_switchView == nil) {
_switchView = [[UISwitch alloc]init];
}
return _switchView;
} #pragma mark - 自定义cell内部实现,,返回cell的方法
+ (ChaosSettingCell *)cellWithTableView:(UITableView *)tableView style:(UITableViewCellStyle)style
{
static NSString *ID = @"cell"; ChaosSettingCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
if (cell == nil) {
cell = [[ChaosSettingCell alloc] initWithStyle:style reuseIdentifier:ID];
}
return cell;
} // 重写cell的set方法,给cell赋值
- (void)setItem:(ChaosSettingItem *)item
{
_item = item; [self setUpData]; [self setUpAccessoryView];
} // 给cell绑定数据
- (void)setUpData
{
self.imageView.image = self.item.icon;
self.textLabel.text = self.item.title;
self.detailTextLabel.text = self.item.subTitle;
}
// 设置cell的辅助视图
- (void)setUpAccessoryView
{
if ([self.item isKindOfClass:[ChaosSettingItemArrow class]]) { // 箭头 self.accessoryView = self.arrowView; } else if([self.item isKindOfClass:[ChaosSettingItemSwitch class]]){ // 开关 self.accessoryView = self.switchView;
self.selectionStyle = UITableViewCellSelectionStyleNone; } else { // 还原 self.accessoryView = nil;
self.selectionStyle = UITableViewCellSelectionStyleDefault;
}
} @end

通过设置不同的模型,完全实现了展示的效果

 #import "ChaosSettingViewController.h"
#import "ChaosHelpViewController.h"
#import "ChaosSettingGroup.h" #import "ChaosPushViewController.h"
#import "ChaosHelpViewController.h" #import "ChaosBlurView.h"
#import "MBProgressHUD+XMG.h" @interface ChaosSettingViewController () @end @implementation ChaosSettingViewController - (instancetype)init
{
return [super initWithStyle:UITableViewStyleGrouped];
} - (void)viewDidLoad {
[super viewDidLoad]; self.title = @"设置";
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"常见问题" style:UIBarButtonItemStyleBordered target:self action:@selector(help)]; [self setUpGroup0];
[self setUpGroup1];
[self setUpGroup2];
} - (void)help
{
ChaosHelpViewController *helpVC = [[ChaosHelpViewController alloc] init]; helpVC.title = @"帮助"; [self.navigationController pushViewController:helpVC animated:YES];
} - (void)setUpGroup0
{
ChaosSettingItemArrow *item = [ChaosSettingItemArrow itemWithImage:[UIImage imageNamed:@"RedeemCode"] title:@"使用兑换码"];
item.pushVCName = [UITableViewController class];
NSArray *items = @[item];
ChaosSettingGroup *group = [ChaosSettingGroup groupWithHeader:nil footer:nil items:items];
[self.sections addObject:group];
}
- (void)setUpGroup1
{
ChaosSettingItemArrow *item = [ChaosSettingItemArrow itemWithImage:[UIImage imageNamed:@"MorePush"] title:@"推送和提醒"]; item.pushVCName = [ChaosPushViewController class]; ChaosSettingItemSwitch *item1 = [ChaosSettingItemSwitch itemWithImage:[UIImage imageNamed:@"more_homeshake"] title:@"摇一摇机选"];
ChaosSettingItemSwitch *item2 = [ChaosSettingItemSwitch itemWithImage:[UIImage imageNamed:@"sound_Effect"] title:@"声音效果"];
ChaosSettingItemSwitch *item3 = [ChaosSettingItemSwitch itemWithImage:[UIImage imageNamed:@"More_LotteryRecommend"] title:@"采购小助手"];
NSArray *items = @[item,item1,item2,item3];
ChaosSettingGroup *group = [ChaosSettingGroup groupWithHeader:nil footer:nil items:items];
[self.sections addObject:group];
}
- (void)setUpGroup2
{
ChaosSettingItemArrow *item = [ChaosSettingItemArrow itemWithImage:[UIImage imageNamed:@"MoreUpdate"] title:@"检查新版本"];
item.itemOpertion = ^(NSIndexPath *indexPath){
// 高斯模糊框架的应用
ChaosBlurView *blurView = [[ChaosBlurView alloc] initWithFrame:ChaosScreenBounds];
[ChaosKeyWindow addSubview:blurView]; [MBProgressHUD showSuccess:@"没有新版本可更新"]; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)( * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[blurView removeFromSuperview];
}); };
ChaosSettingItemArrow *item1 = [ChaosSettingItemArrow itemWithImage:[UIImage imageNamed:@"MoreShare"] title:@"分享"];
ChaosSettingItemArrow *item2 = [ChaosSettingItemArrow itemWithImage:[UIImage imageNamed:@"MoreNetease"] title:@"产品推荐"];
ChaosSettingItemArrow *item3 = [ChaosSettingItemArrow itemWithImage:[UIImage imageNamed:@"MoreAbout"] title:@"关于"];
NSArray *items = @[item,item1,item2,item3];
ChaosSettingGroup *group = [ChaosSettingGroup groupWithHeader:nil footer:nil items:items];
[self.sections addObject:group];
} @end

模型中的

/** itemblock */

@property(nonatomic,strong) void(^itemOpertion)(NSIndexPath *indexPath); 这个属性用来保存代码段。项目中是点击了相应的cell后需要做的事情保存到了block中

iOS彩票项目--第六天,运用MVC思想搭建设置界面(非storyboard方法)的相关教程结束。

《iOS彩票项目--第六天,运用MVC思想搭建设置界面(非storyboard方法).doc》

下载本文的Word格式文档,以方便收藏与打印。