第二十七篇使用MVVM布局页面
Posted 久冬不雨
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第二十七篇使用MVVM布局页面相关的知识,希望对你有一定的参考价值。
下面还是举个简单明了的例子好了!MVVM来了。。。 先Model @interface MyAssetsModel : NSObject @property (nonatomic,copy) NSString *typeStr;//现金余额,路费宝余额 @property (nonatomic,copy) NSString *detailStr;//现金明细,路费宝明细 @property (nonatomic,copy) NSString *money; @property (nonatomic,copy) NSString *getMoney;//余额提现,兑换现金 @property (nonatomic,copy) NSString *desc;//描述 @end ViewModel 的.h文件 #import <Foundation/Foundation.h> #import "MyAssetsModel.h" @interface MyAssetsViewModel : NSObject @property (nonatomic, copy) NSString *cellName; @property (nonatomic, copy) NSString *cellId; @property (nonatomic, assign) CGFloat cellheight; - (instancetype)initWidthModel:(MyAssetsModel *)model; @end .m文件 @implementation MyAssetsViewModel - (instancetype)initWidthModel:(MyAssetsModel *)model { MyAssetsViewModel *viewModel = [[MyAssetsViewModel alloc] init]; viewModel.cellName = @"MyAssetsTableViewCell"; viewModel.cellId = @"MyAssetsTableViewCellId"; viewModel.cellheight = [NSString sizeWithString:model.desc font:[UIFont systemFontOfSize:[PublicUnit CGRectMakeX:12]] ParagrapGap:[PublicUnit CGRectMakeX:6] withMaxSize:CGSizeMake(SCREEN_WIDTH- [PublicUnit CGRectMakeX:30], 2000)].height+[PublicUnit CGRectMakeX:150]; return viewModel; } @end 下面是Controller #import "FPHMyAssetsViewController.h" #import "MyAssetsTableViewCell.h" #import "MyAssetsModel.h" #import "MyAssetsViewModel.h" #import "FPHBalanceVC.h" #import "FPHDrawCashVC.h" #import "FPHRuleCashVC.h" @interface FPHMyAssetsViewController ()<UITableViewDelegate,UITableViewDataSource> @property (nonatomic,strong) UITableView *tableView; @property (nonatomic,strong) NSMutableArray *dataArray; @property (nonatomic,strong) NSMutableArray *dataViewModelArray; @end @implementation FPHMyAssetsViewController - (void)viewDidLoad { [super viewDidLoad]; [self setBaseView]; [self registCell]; } - (void)setBaseView { self.title = @"我的资产"; [self.view addSubview:self.tableView]; [self requestWalletRecord]; } - (void)registCell { [self.tableView registerClass:[MyAssetsTableViewCell class] forCellReuseIdentifier:@"MyAssetsTableViewCellId"]; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return self.dataArray.count; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { MyAssetsViewModel *viewModel = _dataViewModelArray[indexPath.row]; if (!viewModel) { return nil; } if ([viewModel.cellName isEqualToString:@"MyAssetsTableViewCell"]) { MyAssetsTableViewCell *cell = (MyAssetsTableViewCell*)[tableView dequeueReusableCellWithIdentifier:viewModel.cellId forIndexPath:indexPath]; [cell cellFilledWithModel:_dataArray[indexPath.row]]; cell.myAssetsBlock = ^(MyAssetsModel *model){ if ([model.getMoney isEqualToString:@"余额提现"]) { [NSUserDefaults setInteger:1 forKey:RightNow]; NSString *money = model.money; [NSUserDefaults setFloat:[money floatValue] forKey:CrashMoney]; FPHDrawCashVC *vc = [[FPHDrawCashVC alloc] init]; [[self navigationController] pushViewController:vc animated:YES]; }else { [NSUserDefaults setInteger:0 forKey:RightNow]; NSString *money = model.money; [NSUserDefaults setFloat:[money floatValue] forKey:CrashMoney]; FPHRuleCashVC *vc = [[FPHRuleCashVC alloc] init]; [self.navigationController pushViewController:vc animated:YES]; } }; return cell; } return nil; } - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { MyAssetsViewModel *viewModel = self.dataViewModelArray[indexPath.row]; return viewModel.cellheight; } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { if (indexPath.row == 0) { FPHBalanceVC *vc = [[FPHBalanceVC alloc] init]; vc.balanceStatus = 1; [self.navigationController pushViewController:vc animated:YES]; }else{ FPHBalanceVC *vc = [[FPHBalanceVC alloc] init]; vc.balanceStatus = 2; [self.navigationController pushViewController:vc animated:YES]; } } #pragma mark -- #pragma mark -- setter and getter - (UITableView *)tableView { if (!_tableView) { _tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)]; _tableView.delegate = self; _tableView.dataSource = self; _tableView.backgroundColor = UIColorWithHexRGB(0xf5f5f5); _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; _tableView.tableHeaderView = [self addHeader]; } return _tableView; } //tableview header - (UIView *)addHeader { UIView *header = [[UIView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, [PublicUnit CGRectMakeX:120])]; UIImageView *imgView = [[UIImageView alloc] initWithFrame:header.bounds]; imgView.image = [UIImage imageNamed:@"bg_mymoney"]; [header addSubview:imgView]; return header; } - (NSMutableArray *)dataArray { if (!_dataArray) { _dataArray = [NSMutableArray array]; MyAssetsModel *model1 = [[MyAssetsModel alloc] init]; model1.typeStr =@"现金余额"; model1.detailStr = @"现金明细"; model1.money = @"0.00"; model1.getMoney = @"余额提现"; model1.desc = @"现金余额可以及时转出提现,直接转到自己的银行卡或支付宝。"; [_dataArray addObject:model1]; MyAssetsModel *model2 = [[MyAssetsModel alloc] init]; model2.typeStr =@"路费宝余额"; model2.detailStr = @"路费宝明细"; model2.money = @"802.00"; model2.getMoney = @"兑换现金"; model2.desc = @"路费宝主要通过领路费、分享楼盘、邀请好友看房以及参与房品汇活动获得。路费宝只能兑换到现金余额,每次兑换必须是68的倍数。"; [_dataArray addObject:model2]; } return _dataArray; } - (NSMutableArray *)dataViewModelArray { if (!_dataViewModelArray) { _dataViewModelArray = [NSMutableArray array]; for (MyAssetsModel *model in self.dataArray) { MyAssetsViewModel *viewModel = [[MyAssetsViewModel alloc] initWidthModel:model]; [_dataViewModelArray addObject:viewModel]; } } return _dataViewModelArray; } 文/Migi000(简书作者) 原文链接:http://www.jianshu.com/p/51bf38835461 著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
以上是关于第二十七篇使用MVVM布局页面的主要内容,如果未能解决你的问题,请参考以下文章