精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

在 SwiftUI 中實(shí)戰(zhàn)應(yīng)用 ContentUnavailableView

移動(dòng)開發(fā) Android
我們學(xué)習(xí)了如何在 SwiftUI 中使用 ContentUnavailableView? 類型以用戶友好的方式顯示空狀態(tài)。通過這些簡(jiǎn)單而強(qiáng)大的功能,我們能夠更好地引導(dǎo)用戶,使他們能夠理解應(yīng)用程序的當(dāng)前狀態(tài)。

前言

SwiftUI 引入了新的 ContentUnavailableView 類型,允許我們?cè)趹?yīng)用程序中展示空狀態(tài)、錯(cuò)誤狀態(tài)或任何其他內(nèi)容不可用的狀態(tài)。本周,我們將學(xué)習(xí)如何使用 ContentUnavailableView 引導(dǎo)用戶瀏覽應(yīng)用程序中的空狀態(tài)。

基本用法

讓我們從展示 ContentUnavailableView 視圖的基本用法開始。

struct ContentView: View {
    let store: Store
    
    var body: some View {
        NavigationStack {
            List(store.products, id: \.self) { product in
                Text(verbatim: product)
            }
            .navigationTitle("Products")
            .overlay {
                if store.products.isEmpty {
                    ContentUnavailableView(
                        "Connection issue",
                        systemImage: "circle"
                    )
                }
            }
        }
    }
}

圖片圖片

在上面的示例中,我們將 ContentUnavailableView 定義為產(chǎn)品列表的疊加層。每當(dāng)產(chǎn)品列表為空時(shí),我們使用帶有標(biāo)題和圖像的 ContentUnavailableView 顯示。ContentUnavailableView 的另一種變體還允許我們定義當(dāng)前狀態(tài)的描述文本。

自定義視圖

struct ContentView: View {
    let store: Store
    
    var body: some View {
        NavigationStack {
            List(store.products, id: \.self) { product in
                Text(verbatim: product)
            }
            .navigationTitle("Products")
            .overlay {
                if store.products.isEmpty {
                    ContentUnavailableView {
                        Label("Connection issue", systemImage: "wifi.slash")
                    } description: {
                        Text("Check your internet connection")
                    } actions: {
                        Button("Refresh") {
                            store.fetch()
                        }
                    }
                }
            }
        }
    }
}

圖片圖片

ContentUnavailableView 還允許我們?cè)诿枋鑫谋鞠路斤@示操作按鈕。因此,ContentUnavailableView 初始化程序的另一種變體允許我們使用 ViewBuilder 閉包定義視圖的每個(gè)部分,從而完全自定義其外觀和感覺。

搜索屏幕使用

struct ContentView: View {
    @Bindable var store: Store
    
    var body: some View {
        NavigationStack {
            List(store.products, id: \.self) { product in
                Text(verbatim: product)
            }
            .navigationTitle("Products")
            .overlay {
                if store.products.isEmpty {
                    ContentUnavailableView.search
                }
            }
            .searchable(text: $store.query)
        }
    }
}

圖片圖片

在搜索屏幕顯示搜索結(jié)果時(shí),可以使用 ContentUnavailableView 類型的搜索功能。它由框架本地化,并遍歷視圖層次結(jié)構(gòu)以找到搜索欄并提取其文本以顯示在視圖內(nèi)。

手動(dòng)提供查詢

struct ContentView: View {
    @Bindable var store: Store
    
    var body: some View {
        NavigationStack {
            List(store.products, id: \.self) { product in
                Text(verbatim: product)
            }
            .navigationTitle("Products")
            .overlay {
                if store.products.isEmpty {
                    ContentUnavailableView.search(text: store.query)
                }
            }
            .searchable(text: $store.query)
        }
    }
}

圖片圖片

你還可以通過使用 ContentUnavailableView 類型的搜索功能并提供單個(gè)參數(shù)來手動(dòng)將查詢輸入描述中。

可運(yùn)行 Demo

完整可以運(yùn)行的 Demo 需要有相關(guān)的環(huán)境和依賴項(xiàng),而代碼片段中涉及到了一些 Store 和其他可能的模型或服務(wù)。由于代碼片段中的 Store 類型未提供,我將使用一個(gè)簡(jiǎn)化版本的示例代碼來創(chuàng)建一個(gè)簡(jiǎn)單的 SwiftUI Demo,以展示 ContentUnavailableView 的基本使用。

import SwiftUI

struct Product: Identifiable {
    let id: UUID
    let name: String
}

class ProductStore: ObservableObject {
    @Published var products: [Product] = []

    func fetchProducts() {
        // Simulating product fetching
        DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
            self.products = [Product(id: UUID(), name: "iPhone"), Product(id: UUID(), name: "iPad")]
        }
    }
}

struct ContentView: View {
    @StateObject var store = ProductStore()

    var body: some View {
        NavigationView {
            List(store.products) { product in
                Text(product.name)
            }
            .navigationTitle("Products")
            .overlay {
                if store.products.isEmpty {
                    ContentUnavailableView(
                        "No Products",
                        systemImage: "exclamationmark.triangle"
                    )
                }
            }
            .onAppear {
                store.fetchProducts()
            }
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

上述代碼中,我們創(chuàng)建了一個(gè)簡(jiǎn)單的 Product 結(jié)構(gòu)體表示產(chǎn)品,以及一個(gè) ProductStore 類作為存儲(chǔ)產(chǎn)品的模擬服務(wù)。在 ContentView 中,我們使用 ContentUnavailableView 來處理產(chǎn)品為空的情況。

請(qǐng)確保在 Xcode 中創(chuàng)建一個(gè)新的 SwiftUI 項(xiàng)目,并將上述代碼替換到主 ContentView 中,然后運(yùn)行該項(xiàng)目。在項(xiàng)目的初始加載時(shí),ContentUnavailableView 將顯示“No Products”消息,幾秒后模擬產(chǎn)品加載,之后產(chǎn)品列表將顯示在主視圖中。

總結(jié)

今天,我們學(xué)習(xí)了如何在 SwiftUI 中使用 ContentUnavailableView 類型以用戶友好的方式顯示空狀態(tài)。通過這些簡(jiǎn)單而強(qiáng)大的功能,我們能夠更好地引導(dǎo)用戶,使他們能夠理解應(yīng)用程序的當(dāng)前狀態(tài)。ContentUnavailableView 的靈活性和易用性為我們處理應(yīng)用程序中的不可用狀態(tài)提供了有力的工具。

責(zé)任編輯:武曉燕 來源: Swift社區(qū)
相關(guān)推薦

2023-11-20 09:55:34

音頻圖表SwiftUI

2023-03-15 09:00:43

SwiftUISlider

2024-09-29 09:58:57

2024-05-17 09:00:45

SwiftUIvisionOS

2022-11-07 15:40:22

數(shù)據(jù)轉(zhuǎn)碼應(yīng)用應(yīng)用開發(fā)

2018-02-10 09:44:19

2024-06-25 09:05:09

SwiftUIUIKitEntry

2020-05-22 10:40:33

ContinuatioJS前端

2017-09-04 14:40:00

LimitLatchTomcat線程

2011-04-18 10:59:20

ClientServerJava

2023-03-24 09:07:22

SignalsJavaScript應(yīng)用

2017-09-06 14:56:09

深度學(xué)習(xí)CTR應(yīng)用

2009-02-27 16:22:34

AjaxProAjax.NET

2024-11-26 07:53:07

2022-06-06 09:01:16

SwiftUI自定義導(dǎo)航

2024-09-30 11:51:07

2010-07-19 10:16:24

ibmdwWeb2.0

2009-06-29 17:09:49

JavaBeanJSP

2022-06-28 08:02:44

SPISpringJava

2009-02-03 10:19:45

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

九九视频在线免费观看| 久久精品一区二| 成人1区2区3区| 精品动漫3d一区二区三区免费| 欧美成人高清电影在线| 热99这里只有精品| 视频在线观看你懂的| 狂野欧美性猛交xxxx巴西| 中文字幕日韩在线观看| www激情五月| 羞羞视频在线观看不卡| 成人午夜视频在线观看| 欧洲美女7788成人免费视频| 女人十八毛片嫩草av| 久久在线观看| 天天综合网 天天综合色| 欧美一级日本a级v片| 国产伦精品一区二区三区免.费| 欧美特黄a级高清免费大片a级| 亚洲国产欧美一区| 岛国毛片在线播放| 密臀av在线| 国产日韩欧美亚洲| av色综合网| 国产suv精品一区二区33| 天天天综合网| 亚洲美女自拍视频| 日日噜噜噜噜久久久精品毛片| 黄色网页在线免费看| 成人性生交大合| 国产精品福利久久久| 永久看片925tv| 美女少妇全过程你懂的久久| 91精品国产综合久久久久久漫画 | 日本r级电影在线观看| 亚洲欧美韩国| 亚洲综合一二区| 欧洲一区二区日韩在线视频观看免费 | 日本精品一区二区三区在线播放视频 | 99久久99精品久久久久久| 国产精品久久久久久久久| 九九视频免费在线观看| 日韩精品第一区| 精品视频一区在线视频| 国产又粗又猛又爽又黄| 成人自拍视频网| 精品电影在线观看| 青青青在线观看视频| 自拍视频在线| 国产欧美精品一区aⅴ影院| 国产精品区一区| 国产精品乱码久久久| 日本一区中文字幕 | 欧美日韩精品在线观看视频| 秋霞欧美视频| 伊人一区二区三区久久精品 | 丁香激情综合五月| 国产美女精品视频免费观看| 69视频免费看| 亚洲一区网站| 7777kkkk成人观看| 日韩乱码人妻无码中文字幕| 国产精品大片| 欧美日韩成人在线观看| 国产中文字幕久久| 久久99久久人婷婷精品综合| 日韩电影中文字幕在线| 亚洲av网址在线| 欧美一级色片| 精品无人区乱码1区2区3区在线| 午夜影院免费观看视频| 亚洲欧美专区| 欧美一区二区女人| 美女被艹视频网站| 日韩影片在线观看| 日韩精品一区二区三区swag| 超级砰砰砰97免费观看最新一期 | 成人亚洲综合天堂| 国产精品色呦呦| 亚洲视频在线观看日本a| 中文字幕在线观看日本| 国产精品国产精品国产专区不片| 色噜噜色狠狠狠狠狠综合色一| 黄色在线观看网| 国产情人综合久久777777| 日本不卡一区二区三区视频| 国产精品免费观看| 国产精品夫妻自拍| 亚洲电影网站| a免费在线观看| 亚洲香肠在线观看| 艳母动漫在线观看| 黑人极品ⅴideos精品欧美棵| 午夜天堂影视香蕉久久| 国产91对白刺激露脸在线观看| 欧美男女交配| 88在线观看91蜜桃国自产| 国产精品久久久久久9999| 日本一区二区三区播放| 日韩精品视频免费专区在线播放 | 国产黄色精品视频| 精品国产乱码久久久久| sese一区| 亚洲综合色在线| 农村妇女精品一二区| 亚洲国产aⅴ精品一区二区三区| 精品成人a区在线观看| 四虎永久免费影院| 欧美好骚综合网| 欧美精品videosex牲欧美| 国产成人免费观看视频| 精品一区二区免费| 99re6热在线精品视频播放速度| 天堂在线中文字幕| 国产精品久久久久久久浪潮网站| 免费高清一区二区三区| 日韩精品免费观看视频| 日韩精品综合一本久道在线视频| 色呦呦一区二区| 精品国产一区二区三区噜噜噜| 欧美成人四级hd版| 无码日韩精品一区二区| 国产精品一区在线观看乱码| 国产亚洲欧美另类一区二区三区| av资源种子在线观看| 亚洲一级不卡视频| 最新免费av网址| 婷婷激情久久| 欧美另类99xxxxx| 中文人妻av久久人妻18| 国产精品538一区二区在线| 欧美久久综合性欧美| 黄页网站在线观看免费| 精品视频免费在线| 精品人妻少妇嫩草av无码| 午夜精品剧场| 国产一区私人高清影院| 青青草在线播放| 亚洲国产精品久久久男人的天堂| www.激情小说.com| 美女毛片一区二区三区四区最新中文字幕亚洲| 久久久国产一区二区| 国产真实夫妇交换视频| 久久电影网站中文字幕| 欧美资源一区| xxxxxx欧美| 亚洲国产黄色片| 欧美精品一区二区蜜桃| 精品一区二区三区久久| 在线日韩av永久免费观看| 国产精品一区二区av影院萌芽| 日韩美女主播在线视频一区二区三区| 永久免费看片视频教学| 免费日韩视频| 久久久久久久久久久一区| 福利小视频在线| 欧美日韩美少妇| 我想看黄色大片| 青青草成人在线观看| 日本欧美色综合网站免费| 九色porny自拍视频在线播放| 日韩欧美自拍偷拍| 欧美成人一二三区| 国产成人一级电影| 51xx午夜影福利| 精品精品视频| 色小说视频一区| 一二三区在线播放| 亚洲色图第一区| 视频在线观看免费高清| 99久久99热这里只有精品| 成人黄色在线观看| av免费看在线| 日韩一区二区三区高清免费看看| 永久久久久久久| 国产福利一区二区三区视频在线| 国产免费xxx| 亚洲欧洲国产精品一区| 欧美另类交人妖| www.com欧美| 亚洲成av人片在www色猫咪| 97香蕉碰碰人妻国产欧美| 亚洲免费高清| 日本成人三级| 国产成人精品一区二三区在线观看| 亚洲免费av电影| 中文字幕在线观看视频一区| 国产日韩欧美综合一区| 日本中文字幕观看| 极品裸体白嫩激情啪啪国产精品| 精品国产乱码久久久久久久软件 | 成人毛片在线精品国产| 欧美丝袜一区二区三区| 18精品爽国产三级网站| 久久久夜夜夜| 黄色一级视频播放| 久久99国产精品久久99大师| 国外成人在线直播| 成人高清网站| 日韩精品一区二区三区视频在线观看| 日本午夜视频在线观看| 亚洲欧洲三级电影| 中国免费黄色片| 日韩中文字幕av电影| 免费cad大片在线观看| 亚洲深夜福利在线观看| 成人免费黄色网| 黄色aa久久| 最近中文字幕2019免费| 殴美一级特黄aaaaaa| 91九色02白丝porn| 妺妺窝人体色www婷婷| 2023国产精品| 国产成人精品一区二区在线小狼| 美女久久网站| 国产对白在线播放| 国产一区在线电影| 成人h视频在线观看播放| 九色porny丨首页入口在线| 国产亚洲视频在线| 黄色片网站免费在线观看| 欧美日韩精品一区二区三区 | 欧美在线观看网站| а√中文在线8| 国产亚洲精品激情久久| 国产精品美女久久久久av爽| 国产精品国产三级国产aⅴ原创| 亚洲a v网站| 成人激情免费网站| 香蕉视频xxxx| 国产一区美女在线| 在线黄色免费观看| 丝袜脚交一区二区| 久久久久人妻精品一区三寸| 日韩天堂av| 可以看毛片的网址| 欧美日韩99| 欧美 亚洲 视频| 亚洲精品国产首次亮相| 裸体大乳女做爰69| 综合精品久久| 久久久无码中文字幕久...| 天天射成人网| 椎名由奈jux491在线播放| 91综合在线| 亚洲一区二区三区精品动漫| 成人午夜国产| 一区二区三区欧美成人| 91久久电影| 天堂v在线视频| 亚洲成人国产| 国产日产欧美一区二区| 欧美三级小说| 久久黄色片视频| 亚洲综合国产| 熟妇人妻无乱码中文字幕真矢织江| 亚洲欧美日韩国产| 国产日产欧美视频| 日韩精品免费视频人成| www.久久91| 国产精品亚洲成人| 日本久久久久久久久久| 不卡的av电影| 亚洲熟妇一区二区三区| 国产精品理论在线观看| 国产一二三区精品| 午夜精品一区二区三区电影天堂| 91蜜桃视频在线观看| 色哟哟一区二区在线观看 | 日本欧美一区二区| 在线观看国产一级片| 国产精品原创巨作av| 亚洲精品乱码久久久久久不卡| 91丝袜国产在线播放| 免费人成又黄又爽又色| 亚洲欧美在线观看| 91久久国产视频| 91久久精品一区二区三区| 国产人妖在线播放| 亚洲国产成人av在线| 韩国三级在线观看久| 久久精品国产成人精品| a级片在线免费| 国产精品久久久久久久一区探花 | 亚洲精品一区二区三区精华液| 丝袜视频国产在线播放| 日韩中文字幕视频在线| √8天堂资源地址中文在线| 国产福利视频一区二区| 免费观看在线一区二区三区| 欧美日韩精品一区| 香蕉久久网站| 黄色av网址在线播放| 久久99国产精品成人| 国产伦精品一区二区三区精品| 国产日韩欧美激情| 久久久夜色精品| 在线日韩av片| 欧美综合视频在线| xxx成人少妇69| 中国色在线日|韩| 91天堂在线观看| 国产精品最新| 青草视频在线观看视频| 蜜臀av性久久久久蜜臀aⅴ| 国产女人18毛片水真多18| 中文字幕一区二区视频| 国产又大又黄视频| 欧美mv和日韩mv的网站| 91xxx在线观看| 茄子视频成人在线| 在线精品视频一区| 超碰在线免费观看97| 日韩av一二三| jizz欧美性20| 一区2区3区在线看| 91中文字幕在线播放| 国产亚洲欧美日韩一区二区| 涩涩视频在线| 国产一区福利视频| 欧美喷水视频| 亚洲女人在线观看| 国产精品免费aⅴ片在线观看| 欧美一级淫片免费视频黄| 日韩av资源在线播放| 美女精品导航| 99国精产品一二二线| 偷偷www综合久久久久久久| 国产又黄又猛又粗又爽的视频| 97精品国产露脸对白| 天堂资源在线播放| 欧美大片拔萝卜| 性网站在线观看| 亚洲影视九九影院在线观看| 一区二区三区在线| 在线一区二区不卡| 成人欧美一区二区三区黑人麻豆| 日韩不卡高清视频| 亚洲欧洲一区二区三区在线观看 | 色呦呦网站一区| 日本中文字幕电影在线观看| 91精品国产免费久久久久久| 国内自拍欧美| 鲁一鲁一鲁一鲁一澡| av电影在线观看完整版一区二区| 久久亚洲av午夜福利精品一区| 日韩美女在线视频| 波多野结衣久久| 国产精品视频福利| 日韩一级在线| 91成年人网站| 欧美性三三影院| 日本中文字幕在线2020| 91精品综合视频| 欧美日韩亚洲一区三区| caopor在线| 懂色av一区二区三区| 性xxxx18| 国产精品wwww| 久久精品久久久| 免费黄色a级片| 欧美日韩国产精品专区| 日本福利在线观看| 国产精品毛片a∨一区二区三区|国| 欧美日韩黑人| 91pony九色| 精品福利樱桃av导航| 猫咪在线永久网站| 国产又爽又黄的激情精品视频 | 国产女人爽到高潮a毛片| 欧美老女人性生活| 久久99精品久久久久久欧洲站| caopor在线视频| 中文字幕亚洲欧美在线不卡| av片免费播放| 欧洲中文字幕国产精品| 久久一级电影| 国产精品久久久久久亚洲av| 91福利资源站| 黄网站在线播放| 国产亚洲精品久久飘花| 美女视频一区在线观看| 国产亚洲色婷婷久久99精品| 国产视频久久久久| 四虎国产精品永久在线国在线| av无码久久久久久不卡网站| 久久精品一区八戒影视| 国产偷拍一区二区| 青草成人免费视频| 久久精品一区二区不卡| 国产精品第七页| 911国产精品| 久草在线资源福利站| 中文字幕色一区二区| 99久久婷婷国产综合精品| 亚洲综合视频在线播放| 欧美中文字幕视频| 综合天天久久| 无码少妇精品一区二区免费动态| 精品国产91洋老外米糕|