SwiftUI 實戰(zhàn)之List分頁與無限滾動之高級版(2020教程)

在《SwiftUI 高級List分頁與無限滾動之基礎(chǔ)版(2020教程)》中我們介紹了List分頁的基礎(chǔ)實現(xiàn)方法项炼,但是這種方法沒有站在用戶的角度思考避诽,下面我們以用戶為中心制作分頁。

下面诊笤,我們將研究一下如何通過閾值控制獲取下一頁時間戴质。

RandomAccessCollection+isThresholdItem

這次钱磅,我們將從extentions的RandomAccessCollection開始乓土。這次宪潮,我們將實現(xiàn)一個名為isThresholdItem的函數(shù),該函數(shù)確定給定item是否為閾值item趣苏。

extension RandomAccessCollection where Self.Element: Identifiable {
    func isThresholdItem<Item: Identifiable>(offset: Int,
                                             item: Item) -> Bool {
        guard !isEmpty else {
            return false
        }
        
        guard let itemIndex = firstIndex(where: { AnyHashable($0.id) == AnyHashable(item.id) }) else {
            return false
        }
        
        let distance = self.distance(from: itemIndex, to: endIndex)
        let offset = offset < count ? offset : count - 1
        return offset == (distance - 1)
    }
}

此函數(shù)查找給定項目的索引狡相。如果找到,它將計算到終點索引的距離食磕。指定的偏移量(即尽棕,結(jié)束之前的項目數(shù))應(yīng)等于distance —1。我們必須從該距離中減去1彬伦,因為結(jié)束索引等于count屬性的值(即滔悉,集合中的當(dāng)前項目數(shù)) )伊诵。我還為偏移量添加了一個簡單的驗證檢查。偏移量應(yīng)小于集合中的當(dāng)前項目數(shù).

界面部分

UI實現(xiàn)與第一種方法中的UI幾乎相同回官。但是曹宴,有一個關(guān)鍵的區(qū)別,那就是listItemAppears函數(shù)

請記住孙乖,這里我們從第一種方法重用了isLastItem函數(shù)浙炼。僅當(dāng)用戶到達列表的末尾并且對下一頁的請求仍在進行中時份氧,才會顯示加載視圖

還有 83% 的精彩內(nèi)容
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
支付 ¥1.59 繼續(xù)閱讀
  • 序言:七十年代末唯袄,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子蜗帜,更是在濱河造成了極大的恐慌恋拷,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件厅缺,死亡現(xiàn)場離奇詭異蔬顾,居然都是意外死亡,警方通過查閱死者的電腦和手機湘捎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進店門诀豁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人窥妇,你說我怎么就攤上這事舷胜。” “怎么了活翩?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵烹骨,是天一觀的道長。 經(jīng)常有香客問我材泄,道長沮焕,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任拉宗,我火速辦了婚禮峦树,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘旦事。我一直安慰自己魁巩,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布族檬。 她就那樣靜靜地躺著歪赢,像睡著了一般。 火紅的嫁衣襯著肌膚如雪单料。 梳的紋絲不亂的頭發(fā)上埋凯,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天点楼,我揣著相機與錄音,去河邊找鬼白对。 笑死掠廓,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的甩恼。 我是一名探鬼主播蟀瞧,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼条摸!你這毒婦竟也來了悦污?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤钉蒲,失蹤者是張志新(化名)和其女友劉穎切端,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體顷啼,經(jīng)...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡踏枣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了钙蒙。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片茵瀑。...
    茶點故事閱讀 40,488評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖躬厌,靈堂內(nèi)的尸體忽然破棺而出马昨,到底是詐尸還是另有隱情,我是刑警寧澤烤咧,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布偏陪,位于F島的核電站,受9級特大地震影響煮嫌,放射性物質(zhì)發(fā)生泄漏笛谦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一昌阿、第九天 我趴在偏房一處隱蔽的房頂上張望饥脑。 院中可真熱鬧,春花似錦懦冰、人聲如沸灶轰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽笋颤。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間伴澄,已是汗流浹背赋除。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留非凌,地道東北人举农。 一個月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像敞嗡,于是被迫代替她去往敵國和親颁糟。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,500評論 2 359

推薦閱讀更多精彩內(nèi)容