|
/重寫轉寄微博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方法
[email protected](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]; |