解析

weixin_33978044發表於2017-12-21

Model.h

@property(nonatomic,strong)NSString *pic;
@property(nonatomic,strong)NSString *title;
@property(nonatomic,strong)NSString *url;

LoadData.h

#import <Foundation/Foundation.h>
typedef void(^PassDataBlock)(NSMutableArray *arr);
@interface FirstLoadData : NSObject
+ (instancetype)shareLoadData;
- (void)getData:(PassDataBlock )block;
@end

.m

#import "FirstModel.h"
#import <YYModel.h>
static FirstLoadData *ld;
@implementation FirstLoadData
+ (instancetype)shareLoadData
{
    if (!ld) {
        ld = [[FirstLoadData alloc]init];
    }
    return ld;
}
- (void)getData:(PassDataBlock )block
{
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://api.jisuapi.com/news/get"]];
    request.HTTPMethod = @"POST";
    NSString *str = [NSString stringWithFormat:@"channel=%@&start     =%d&num=%d&appkey=%@",@"頭條",0,20,@"c3b84a436b060866"];
    NSData *bodyData = [str dataUsingEncoding:NSUTF8StringEncoding];
    request.HTTPBody = bodyData;
    
    NSURLSession *session = [NSURLSession sharedSession];
    NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];
        NSDictionary *dict = [dic objectForKey:@"result"];
        NSArray *arr = [dict objectForKey:@"list"];
        NSMutableArray *mArr = [NSMutableArray array];
        for (NSDictionary *dictionary in arr) {
//            FirstModel *m = [[FirstModel alloc]init];
//            m.title = dictionary[@"title"];
//            m.pic = dictionary[@"pic"];
//            m.url = dictionary[@"url"];
             FirstModel *yaowen = [FirstModel yy_modelWithDictionary:dictionary];
            [mArr addObject:yaowen];
            NSLog(@"%@",mArr);
        }
        dispatch_async(dispatch_get_main_queue(), ^{
            block(mArr);
        });
    }];
    [task resume];
}
@end

UIViewController.m

#import "FirstViewController.h"
#import "ImageScrollView.h"
#import "TableViewCell.h"
#import "FirstLoadData.h"
#import "FirstModel.h"
#import "UIImageView+WebCache.h"
#import "NextViewController.h"

@interface FirstViewController ()<ImageScrollViewDelegate,UITableViewDelegate,UITableViewDataSource>
{
   NSMutableArray *marr;
   MJRefreshNormalHeader *_header;
}
@property(nonatomic,strong)UITableView *tableView;;

@end

@implementation FirstViewController

-(UITableView *)tableView{
   if (!_tableView) {
       _tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, FIT_Y(260), self.view.frame.size.width,SCREEN_H-FIT_Y(230)) style:UITableViewStylePlain];
       _tableView.delegate = self;
       _tableView.dataSource = self;
       _tableView.rowHeight = 290;
       _tableView.backgroundColor = [UIColor clearColor];

   }
   return _tableView;
}
- (void)ShuaXin
{
   // 設定回撥(一旦進入重新整理狀態,就呼叫target的action,也就是呼叫self的loadNewData方法)
   _header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(loadNewData)];
   
   // 設定自動切換透明度(在導航欄下面自動隱藏)
   _header.automaticallyChangeAlpha = YES;
   
   // 隱藏時間
   _header.lastUpdatedTimeLabel.hidden = YES;
   
   
   // 設定header
   self.tableView.mj_header = _header;
   
}
- (void)loadNewData
{
   [self viewWillAppear:YES];
   [self.tableView reloadData];
   [_header  endRefreshing];
}
- (void)viewDidLoad {
   [super viewDidLoad];
   [self.view addSubview:self.tableView];
   [self ShuaXin];
   [[FirstLoadData shareLoadData]getData:^(NSMutableArray *arr) {
       marr = arr;
       [_tableView reloadData];
   }]; 
}
#pragma mark ---UITableViewDataSource

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
   return marr.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
   static NSString *iden = @"cell";
   TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:iden];
   if (cell == nil) {
       cell = [[TableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:iden];
   }
   FirstModel *m = marr[indexPath.row];
   cell.title.text = m.title;
   
   [cell.image sd_setImageWithURL:[NSURL URLWithString:m.pic] placeholderImage:[UIImage imageNamed:@"103.jpg"] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
       
   }];
  
   return  cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
   FirstModel *m = marr[indexPath.row];
   NextViewController *dvc = [[NextViewController alloc]init];
   dvc.weburl = m.url;
   [self.navigationController pushViewController:dvc animated:YES];
}




@end