日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第二十七篇、使用MVVM布局页面

發(fā)布時(shí)間:2025/3/17 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第二十七篇、使用MVVM布局页面 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

思路:架構(gòu)的設(shè)計(jì)模式主要有這么兩種

  >MVC :這種方式用得很多,也很是常見,不在過多的介紹

  >MVVM:使用這種?常常需要導(dǎo)入第三方框架,常見的是響應(yīng)式框架

    >主要講一下ViewModel : ViewModel 主要管理的使用是一些(不歸類于Model 或者 Controller)的業(yè)務(wù)邏輯,常見的是一些網(wǎng)絡(luò)請求,布局的一些邏輯

  

下面還是舉個簡單明了的例子好了!MVVM來了。。。
先Model(模型)
@interface MyAssetsModel : NSObject@property (nonatomic,copy) NSString *typeStr;//現(xiàn)金余額,路費(fèi)寶余額 @property (nonatomic,copy) NSString *detailStr;//現(xiàn)金明細(xì),路費(fèi)寶明細(xì) @property (nonatomic,copy) NSString *money; @property (nonatomic,copy) NSString *getMoney;//余額提現(xiàn),兌換現(xiàn)金 @property (nonatomic,copy) NSString *desc;//描述@end
ViewModel的.h文件(主要用來處理一些不歸類為Controller和Model,如網(wǎng)絡(luò)請求等等) #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 = @"我的資產(chǎn)";[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:@"余額提現(xiàn)"]) {[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 =@"現(xiàn)金余額";model1.detailStr = @"現(xiàn)金明細(xì)";model1.money = @"0.00";model1.getMoney = @"余額提現(xiàn)";model1.desc = @"現(xiàn)金余額可以及時(shí)轉(zhuǎn)出提現(xiàn),直接轉(zhuǎn)到自己的銀行卡或支付寶。";[_dataArray addObject:model1];MyAssetsModel *model2 = [[MyAssetsModel alloc] init];model2.typeStr =@"路費(fèi)寶余額";model2.detailStr = @"路費(fèi)寶明細(xì)";model2.money = @"802.00";model2.getMoney = @"兌換現(xiàn)金";model2.desc = @"路費(fèi)寶主要通過領(lǐng)路費(fèi)、分享樓盤、邀請好友看房以及參與房品匯活動獲得。路費(fèi)寶只能兌換到現(xiàn)金余額,每次兌換必須是68的倍數(shù)。";[_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; }

?

轉(zhuǎn)載于:https://www.cnblogs.com/HJQ2016/p/5875137.html

總結(jié)

以上是生活随笔為你收集整理的第二十七篇、使用MVVM布局页面的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产欧美精品一区二区三区 | 欧美射图| 欧美成人福利 | 亚洲欧美日本一区 | 人妻丝袜一区 | 亚洲一区欧美 | 激情网五月天 | 精品国自产在线观看 | 在线高清观看免费观看 | 91成人在线观看喷潮 | 国产精品自拍在线 | 国产激情久久 | 免费一级片网址 | 综合久久五月天 | 久久精品视频一区二区三区 | 午夜做爰xxxⅹ性高湖视频美国 | 久久久久久久伊人 | 日本一区二区人妻 | 超碰日日夜夜 | 青草久久久久 | 免费看欧美片 | 欧美一区二区不卡视频 | 国产在线aaa | 国产免费av片在线 | 岛国伊人 | 正在播放adn156松下纱荣子 | 美女扒开让男人桶爽 | 国产二区视频在线观看 | 黄色国产毛片 | 国产亚洲视频一区 | 色多多视频在线 | www.jizzjizz| 日韩特级黄色片 | 精品久久成人 | 色女人网站| 成年人黄视频 | 欧美一卡二卡在线观看 | 日韩欧美成人一区二区三区 | hd极品free性xxx护士 | 91九色成人 | 国产精品一区二区三区四区视频 | 色射综合 | 99免费在线观看 | 97精品人妻一区二区三区 | cao国产| 嫩模啪啪| 99视频在线精品免费观看2 | 欧美日韩一区二区三区 | 久久99久久99精品免视看婷婷 | 97人妻精品一区二区三区 | 成人av手机在线 | 久久激情影院 | 国产精品一线二线三线 | 亚洲婷婷在线视频 | 国产成人主播 | www.69视频| 毛片啪啪啪 | 理论片第一页 | 操你啦免费视频 | 性视频在线播放 | 操一操视频 | 欧美天天爽 | 日韩不卡一区二区 | 欧美 日韩 国产 在线 | 亚洲激情视频在线 | 国产成人免费看 | 黑人黄色片| 日韩v欧美| 国产一区二区波多野结衣 | 30一40一50老女人毛片 | 国产成人精品久久二区二区 | 一区二区视屏 | 青娱乐青青草 | 国产精品三区四区 | 久久精品a亚洲国产v高清不卡 | 九九综合| 日日骑| 欧美专区在线视频 | av鲁丝一区鲁丝二区鲁丝 | 男人日女人免费视频 | 香蕉在线播放 | 黄色亚洲精品 | 91视频观看 | 欧美日韩第一页 | 大尺度舌吻呻吟声 | 久久久久国产精品无码免费看 | av手机天堂 | 理论片中文字幕 | 一级片免费看视频 | 亚洲网站在线看 | 深爱五月激情五月 | 欧美sm极限捆绑bd | 亚洲精品国产精品乱码不卡√香蕉 | 国产精品无码一本二本三本色 | 一级黄色大片免费观看 | 在线精品国产 | 特黄aaaaaaaaa毛片免费视频 | 激情自拍视频 | 国产伦精品一区二区三区免费视频 |