MVC的实际使用

作者: 扑腾的蛾子 | 来源:发表于2017-07-17 22:15 被阅读23次

这里就不在多说ios关于架构方面的其他问题了,有关MVP、MVVM等的问题请看我的另一篇文章ios面试题目总结

程序员的捷径是什么,多写代码,多写代码,多写代码。

以往的痛点在于开始程序员为了节省通信方面的代码而将View控件及布局和Model的数据获取及更改。

一、controller中

- (void)viewDidLoad {

[super viewDidLoad];

self.cView = [[CooperationView alloc] initWithFrame:self.view.frame];

[self.view addSubview:self.cView];   // 加载外部的View。

self.modelAry = [NSMutableArray array];

self.cView.modelAry = self.modelAry;   // 组织View及Model的通信。

[self setupRefresh];

}

-(void)setupRefresh{

self.cView.collectionView.mj_header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(loadNew)];  // 调用外部View.

self.cView.collectionView.mj_header.automaticallyChangeAlpha = YES;

[self.cView.collectionView.mj_header beginRefreshing];

self.cView.collectionView.mj_footer = [MJRefreshAutoNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMore)];

self.cView.collectionView.mj_footer.hidden = YES;

}

-(void)loadNew{

[self.cView.collectionView.mj_footer endRefreshing];

self.modelAry = [self.c getCooperationItemList]; //self.c是我创建的一个model对象,他可以进行数据的获取。

self.cView.modelAry = self.modelAry;

[self.cView.collectionView reloadData];

[self.cView.collectionView.mj_header endRefreshing];

[self checkFooterState];

}

二、View中

@interface CooperationView : UIView

@property(nonatomic, strong) UICollectionView *collectionView;  // 添加uicollectiongview

@property (nonatomic, strong) NSMutableArray *modelAry;  // 接受控制器传入的数据来进行加载。

@end

三、model中

@interface Cooperation : NSObject

@property(nonatomic, copy) NSString *product_id;

@property(nonatomic, copy) NSString *number;

@property(nonatomic, copy) NSString *name;

@property(nonatomic, copy) NSString *price;

@property(nonatomic, copy) NSString *inventory;

@property(nonatomic, copy) NSString *image;

@property(nonatomic,assign) NSInteger current_page;  // 当前页数,需要传递给控制器来控制加载更多的行为。

@property(nonatomic,assign) NSInteger total_rows;

-(NSMutableArray*)getCooperationItemList;  // 不只有属性,这个方法从网络获取数据。

@end

-(NSMutableArray *)getCooperationItemList{

__block NSMutableArray *modelAry = [NSMutableArray array];

self.current_page = 1;

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

manager.requestSerializer = [AFHTTPRequestSerializer serializer];

NSMutableDictionary *params = [NSMutableDictionary dictionary];

params[@"per_page"] = @(10);

params[@"page"] = @(self.current_page);

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

params[@"token"] = [defaults objectForKey:@"token"];

[manager GET:[kDomainBaseUrl stringByAppendingString:@"product/cooperateProductLists"] parameters:params progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {

self.current_page = [responseObject[@"meta"][@"pagination"][@"current_page"] integerValue];

self.total_rows = [responseObject[@"meta"][@"pagination"][@"total"] integerValue];

NSArray *rows = responseObject[@"data"];

modelAry = [Cooperation mj_objectArrayWithKeyValuesArray:rows];

} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

}];

return modelAry; //网络请求返回数据这里是有问题的,可以使用代理,在成功获得数据后让控制器进行数据的传递刷新。

}

好了,这是自己的一些简单的使用经验吧。避免了臃肿的控制器的出现。

相关文章

  • MVC的实际使用

    这里就不在多说ios关于架构方面的其他问题了,有关MVP、MVVM等的问题请看我的另一篇文章ios面试题目总结。 ...

  • MVC MVVM和MVP三种设计模式之个人理解^_^

    对于3种设计模式,本人最为熟悉的是MVC,使用最多的也是MVC模式。后来又了解到另外两种模式,不过并没有实际使用过...

  • Spring 和SpringMVC 的父子容器关系

    Spring和SpringMVC作为Bean管理容器和MVC层的默认框架,已被众多WEB应用采用,而实际使用时,由...

  • Spring MVC书目录

    MVC历史 MVC概念 为什么会出现MVC框架 常用的MVC框架 MVC模型的发展轨迹 简述Spring MVC的...

  • 实际使用

    重复的代码片段 1.如校验是否鉴权啦/统计接口耗时啦,考虑使用面向切面编程,预编译方式和运行期动态代理(反射注解)...

  • iOS-MVC

    本文,包含了关于MVC的如下内容: 一、MVC介绍二、MVC的改进三、MVVM简评 一、MVC的介绍 MVC,全称...

  • spring mvc常见面试题

    什么是spring mvc , 谈谈对spring mvc的理解 spring mvc 是基于java实现的mvc...

  • 关于MVC MVP MVVM架构模式的总结

    一、MVC 首先关于MVC:MVC是苹果官方推荐的模式结构,MVC即 Model View Controller,...

  • iOS-MVVM和MVC的区别

    MVVM和MVC的区别 1. MVC MVC MVC的弊端 厚重的View Controller M:模型mode...

  • JWT的实际使用

    <<使用jwt来做验证登陆>> 在之前所说的jwt = json web token,是一个开源的标准规范(RFC...

网友评论

    本文标题:MVC的实际使用

    本文链接:https://www.haomeiwen.com/subject/ksgqkxtx.html