百思不得姐資料重新整理資料部分 七

2021-07-11 04:41:05 字數 4494 閱讀 9593

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...