1 重新整理功能圖:
2 內部計算原理圖
1 分析整個精華模組
2 真實資料請求部分
3 模型
4 先新增尾部重新整理控制項
5 再新增頭部重新整理控制項
6 處理重新整理業務邏輯
7 知識點補充1 大致步驟:
—-> 1 檢視百思不得姐該部分的介面文件,獲取url.
—-> 2 檢視介面文件中哪些是需要的請求引數(在百思不得姐的介面文件中:後面表明了ture是必須要的請求引數)
—-> 3 檢視介面文件,請求方式是什麼?這裡是get請求.
—-> 4 zing共請求資料分三大步驟:1> 建立會話管理者 2> 設定請求引數 3> 傳送請求.
2 需要匯入的框架
#import
#import
#import
3 **部分:載入更多資料;載入最新資料
—> 3.1 載入更多帖子
#pragma mark - 載入更多的帖子數
- (void)setupmoretopics
failure:^(nsurlsessiondatatask * _nullable task, nserror * _nonnull error)
//提醒使用者重新整理失敗
[svprogresshud showerrorwithstatus:@"網路繁忙,請稍後再試..."];
}];});
}
—-> 3.2 載入最新的資料#pragma mark - 載入最新的帖子數
- (void)setloadnews
failure:^(nsurlsessiondatatask * _nullable task, nserror * _nonnull error)
//提醒使用者重新整理失敗
[svprogresshud showerrorwithstatus:@"網路繁忙,請稍後再試..."];
}];});
}
1 模型中的資料部分選擇所有模組的公共部分作為屬性
2 **:
/**
* 踩(hate)
*/@property (nonatomic, assign) nsinteger cai;
/** * 頂(love)
*/@property (nonatomic, assign) nsinteger love;
/** * 帖子描述
*/@property (nonatomic, strong) nsstring *text;
/** * 發帖時間
*/@property (nonatomic, strong) nsstring *passtime;
/** * 使用者名稱
*/@property (nonatomic, strong) nsstring *name;
/** * **
*/@property (nonatomic, assign) nsinteger repost;
/** * **數
*/@property (nonatomic, assign) nsinteger comment;
/** * 頭像
*/@property (nonatomic, strong) nsstring *profile_image;
1 這裡採用uilabel作為重新整理的控制項(也可以採用uiview)
2 注意重新整理控制項的新增位置(可以通過內部計算原理圖來新增)
3 **:
#pragma mark - 建立重新整理的uilabel
- (void)setuprefresh
1 由於我們需要時刻的監聽使用者拖拽tableview的時候,來顯示重新整理控制項的顯示狀態.因為uitableview是繼承uiscrollview的,所以也同時擁有了uiscrollview中的方法.
2 監聽使用者拖動的時候呼叫
#pragma mark - **方法(拖動的時候呼叫)
- (void)scrollviewdidscroll:(uiscrollview *)scrollview
3 處理使用者往上拖拽的時候重新整理條的業務邏輯#pragma mark - footer處理尾部重新整理拖動的時候邏輯
- (void)dealfooter
}
4 tableview開始重新整理部分#pragma mark - footer開始重新整理
- (void)footerbeginrefresh
5 tableview結束重新整理部分#pragma mark - footer結束重新整理
- (void)footerendrefresh
1 建立頂部重新整理條
2 注意新增的位置
3 **部分:
#pragma mark - 建立下拉重新整理控制項
- (void)settitlerefresh
4 監聽使用者往下拖動tableview,重新整理內容的監聽(使用**方法)
—-> 4.1 使用者停止拖動的時候呼叫
#pragma mark - 拖動停止的時候呼叫
- (void)scrollviewdidenddragging:(uiscrollview *)scrollview willdecelerate:(bool)decelerate
}
—-> 4.2 使用者拖動的時候呼叫處理業務邏輯#pragma mark - header處理頭部邏輯
- (void)dealheader
else
}
4.3 頂部重新整理條開始重新整理#pragma mark - header開始重新整理
- (void)headerbeginrefresh
]; //呼叫重新整理方法
[self setloadnews];
}
4.4 頂部重新整理條結束重新整理#pragma mark - header結束重新整理
- (void)headerendrefresh
];}
1 程式一啟動底部的重新整理條會短暫的出現在頂部位置.
—-> 解決方案: 在tableview一重新整理就會呼叫的方法中控制.(通過模型的數量老控制)
#pragma mark - 行數
- (nsinteger)tableview:(uitableview *)tableview numberofrowsinsection:(nsinteger)section
2 程式開始啟動的時候,自動重新整理正常,但是當手動拖拽tableview進行重新整理的時候,重新整理的數量並不能控制,這是不合理的.(請求資料的時候控制了伺服器返回的資料量)
—-> 解決方案: 通過定義乙個第三方屬性來記錄狀態,是否停止重新整理和是否開始重新整理.用if來做出判斷.1 通過檢視寫入的plist檔案,檢視到在maxtime中記錄了每一次返回給客戶端其引數的最後乙個數字.比如:重新整理的時候,接收到伺服器的資料是50;49;48;47的時候,客戶端在重新整理完後,將47返回給伺服器,然後伺服器會根據接收到的請求引數,將位於47後面的資訊返回給客戶端,這樣就達到了重新整理的目的同時不會重複
2 有些公司是通過page來傳送,來判斷返回的資料是否重疊(不推薦使用,因為會照成錯漏).2 補充一些有關於巨集的知識:
—-> 2.1 在巨集裡面,兩個」##」的作用:鏈結兩個識別符號
#define method
(name) - (void)
load##name
{}method
(abc) //- (void)
loadabc
{}method
(ddd) //- (void)
loadddd
{}method
(ttt) //- (void)
loadttt
{}
—-> 2.2 在巨集裡面,乙個」#」的作用:給右邊的識別符號加上雙引號.#define
test(name) @#name
test(abc) // @"abc"
1 該部分只是簡單的tableview重新整理部分,裡面還有很多的不足,需要修改.作者裡面表達的邏輯還是很容易明白的,只是我希望看過我這篇部落格的人很有所收穫,特別是要明白原理圖.裡面牽扯到了一些計算,不懂是沒法做的. 仿百思不得姐 社群
1.獲取資料 通過charles擷取當tabbar切換到 社群 時,傳送get請求獲取資料 經過分析,只需要 url 和 image 建立模型類 inte ce gypromotionitem nsobject property strong,nonatomic nsstring url prope...
百思不得解!
此處專門用來收集一些問題 1.問題背景 記憶體對映檔案的優點在於可以保密檔案。可以減少i o操作。但檔案過大的話並不推薦使用。例如,我的程式要引用乙個叫a.exe的程式,而a.exe是別人寫的我沒有原始碼,但我引用該exe時又不希望別人獲得這個exe,只希望別人在我的程式中使用a.exe的功能。此時...
求乙個SQL更新語句,小弟百思不得其解
tid 自增 code calexpr 1 zj0001 null 2 zj0002 clv clv clv 3 zj0004 null 4 zj0005 clv clv 5 zj0008 clv 3 6 zj0010 clv clv 7 zj0011 clv 100 我想要得到的結果是 把 cal...