标签:
/重写转发微博View的get方法 懒加载,实现了转发微博view复用 // 懒加载就是在程序运行后,不是一下子加载很多的控件,而是后期需要的时候再复用 // 懒加载的形式是重写get方法的同时,里面进行判断跟着 if(obj==nil),这种形式 // 这里的转发的微博view也要考虑view的复用问题 -(LYWeiboView *)reWeiboView{
// if里面判断进行的时候要写成_reWeiboView,如果写self.reWeiboView,它属于_eWeiboView的get方法,get方法里面用属性的get方法取值判断会进入死循环,所以这里重写get方法时候一定要用_reWeiboView来判断是否存在 // 注意:_reWeiboView == nil , 整体是一个get方法, // self.reWeiboView = ,属于set方法; if (_reWeiboView == nil) { // 现创建一个,滴哦用的时候赋值时再定Fram _reWeiboView = [[LYWeiboView alloc]initWithFrame:CGRectZero]; [self addSubview:_reWeiboView]; self.reWeiboView.backgroundColor = LYGrayColor; }
return _reWeiboView; }
// ---------------------- 功能分区 ----------------------------- // [LYSinaUtils requestWeibosWithParams:params Callback:^(id obj) { // // 请求回来的数据是一个大数组 // self.weibos = obj; // // 此block是LYSinaUtils调用的方法,block里用其他对象调方法不会报错警告,如果此block方法是用tableView调用的,就会报错,报错的时候就在block方法外边用“__block”修饰一下 // [tableView reloadData]; // }];
// ---------------------- 功能分区 -----------------------------
/* // 等号右边的永远是fet方法,下面的self.params属于调用get方法,self.params.count属于set方法,一个等号左边最近的属性调用的是set方法 self.params.count=@(3);
*/ // __block typeof(self) weakSelf = self; // __block LYHomeViewController *weakSelf = self; // *** __block这里就记住,当block里要是访问属性,可能会出现报错,直接记住在外边加上__block修饰一下就好了 //添加上拉加载和下拉刷新 在block中访问变量时 会导致内存计数+1 从而可能会引起 对象释放不掉 // __weak 和 __block 都可以使变量在block中使用时 内存计数不加1 //添加下拉刷新事件 [tableView addPullToRefreshWithActionHandler:^{
//刷新的时候如果有数据,判断当前有没有微博数据。 if (self.weibos.count>0) { // 找到微博数据数组里的第一个[0]的就是最新的用户发的微博id LYWeibo *weibo = self.weibos[0]; //获取比自己最新微博 更新微博 self.params.since_id = weibo.wid; } [LYSinaUtils requestWeibosWithParams:self.params Callback:^(id obj) { // 下面添加的时候系统不知道obj是什么,提前用数组接住 NSArray *newWeibos = obj; //把请求到的新的数据插入到数组的最前面 [self.weibos insertObjects:obj atIndexes:[NSIndexSetindexSetWithIndexesInRange:NSMakeRange(0, newWeibos.count)]]; [self.tableView reloadData];
//结束下拉刷新动画 [self.tableView.pullToRefreshView stopAnimating];
}];
}];
//添加上拉加载事件 [tableView addInfiniteScrollingWithActionHandler:^{ //如果是上拉加载 不能设置since_id不然拿不到数据 // 如设置了since_idyou参数,系统就会去请求最新的数据,而不是加载之前的数据
self.params.since_id = nil; //设置请求页数 self.params.page = @(self.params.page.intValue+1);
//上拉加载 [LYSinaUtils requestWeibosWithParams:self.params Callback:^(id obj) { //把获取到的微博数组追加到数据源数组中 [self.weibos addObjectsFromArray:obj]; [self.tableView reloadData]; //结束上拉加载动画 [self.tableView.infiniteScrollingView stopAnimating]; }];
}];
//触发下拉刷新 [self.tableView triggerPullToRefresh]; |
标签:
原文地址:http://www.cnblogs.com/lanyisanqqi/p/5218408.html