日韩性视频-久久久蜜桃-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)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产在线播放一区 | 99热超碰在线| 九色91popny蝌蚪新疆 | 欧美性受黑人性爽 | 狠狠干网站 | 免费成人深夜夜国外 | 青娱乐国产在线视频 | 体感预报日剧 | 深夜福利网站在线观看 | 亚洲激情视频在线 | 欧美国产成人精品一区二区三区 | jizz亚洲女人高潮大叫 | 国产一区二区播放 | 神马午夜激情 | 五十路av | 最近高清中文在线字幕在线观看 | 成人性生活免费看 | 在线国产91| 欧美性videos高清精品 | 假日游船法国满天星 | 欧美性白人极品1819hd | 日本顶级大片 | 亚洲欧美日韩视频一区 | 久操av在线 | 吃奶在线观看 | 日韩国产欧美一区二区 | 日韩欧美在线一区 | 99黄色 | 黄色网视频 | 日本激情网站 | 久久免费播放视频 | 欧美精品一区二区三区久久 | xxxx国产片| yy4138理论片动漫理论片 | 精品久久久国产 | 欧美精品国产一区二区 | 青青草狠狠操 | 性生活av | 午夜性视频 | 色老头一区二区三区在线观看 | 污污视频在线观看网站 | 公侵犯一区二区三区四区中文字幕 | 国产欧美激情视频 | 各种含道具高h调教1v1男男 | 夜色一区二区三区 | 国产男女猛烈无遮挡a片漫画 | 国产欧美一区二区三区在线看蜜臀 | 香蕉伊思人视频 | 女同互舔视频 | 亚洲一区二区三区乱码 | 日韩欧美国产高清91 | 91国产大片 | 九九激情网 | 亚洲v国产v欧美v久久久久久 | 日韩视频在线免费播放 | 性做久久久久久久久 | 成人午夜视频在线播放 | 国产欧美综合视频 | 性色av一区二区三区红粉影视 | 午夜在线观看影院 | 精品| 综合久久五月 | 韩国伦理片观看 | 成人午夜在线 | 黄色免费在线看 | 成人免费观看视频大全 | 国产天天操 | 欧美视频一区二区三区四区在线观看 | xxxx毛片| 亚洲最大福利网 | 岛国免费视频 | 国产精品久久久久久亚洲毛片 | 亚洲狠狠 | 丁香花电影免费播放在线观看 | 黄色大全免费观看 | 福利在线免费观看 | 中文字幕不卡在线 | 97人妻精品一区二区三区动漫 | 中国av免费看 | 三级视频网站在线观看 | 久久美女性网 | 少妇裸体视频 | 美女隐私黄www网站动漫 | 亚洲一区在线观 | www.色播| 亚洲三级小说 | 日韩伊人 | 国产视频精品免费 | 漂亮人妻洗澡被公强 日日躁 | 欧美中字| 国产精品mm | 国产精品怡红院 | 日日操日日干 | 国产三级av片 | 欧美一区二区三区视频 | 久久久经典 | 亚洲一片 | 国产又粗又猛又爽又黄的视频小说 | 亚洲国产精品久久久久婷婷老年 |