精品欧美一区二区三区在线观看 _久久久久国色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)

久久av最新网址| 国产成人福利夜色影视| 成人av综合在线| 51色欧美片视频在线观看| 国产精品高清无码在线观看| 六九午夜精品视频| 亚洲一级二级三级在线免费观看| 精品一区二区日本| 中文字幕精品在线观看| 国产精品av久久久久久麻豆网| 日韩精品一区二区三区在线 | 成人乱码一区二区三区av| 国产91欧美| 五月婷婷色综合| 亚洲人体一区| 亚洲欧美色视频| 国产一区二区在线电影| 清纯唯美亚洲综合| 欧美日韩激情在线观看| 欧美理论视频| 亚洲激情视频在线| 天天操夜夜操很很操| 欧洲亚洲两性| 五月婷婷久久综合| 日本黄色播放器| 国产亚洲依依| 成人三级在线视频| 成人在线一区二区| 成人公开免费视频| 在线视频观看日韩| 久久成人综合视频| 91狠狠综合久久久久久| 青青草这里只有精品| 日韩欧美中文一区| 欧美大片久久久| 91精品xxx在线观看| 天天综合色天天综合色h| 国产人妻互换一区二区| 最新97超碰在线| 久久蜜桃av一区二区天堂| 国产高清自拍99| av综合在线观看| 激情综合色播激情啊| 欧美一级电影久久| 在线观看免费国产视频| 极品中文字幕一区| 欧美激情视频免费观看| 色婷婷在线视频观看| 91精品一区二区三区综合| 中文字幕v亚洲ⅴv天堂| 国产毛片欧美毛片久久久| 免费成人高清在线视频theav| 亚洲国产97在线精品一区| 任你躁av一区二区三区| h视频久久久| 精品毛片乱码1区2区3区| 毛片毛片毛片毛片毛| 涩爱av色老久久精品偷偷鲁 | 国产成人亚洲综合青青| 久久精品国产成人av| 亚洲在线黄色| 日韩美女在线播放| 国产情侣免费视频| 日韩av电影一区| 国产美女久久久| 97人妻精品一区二区三区软件 | 中文字幕在线视频区| 国产欧美日韩精品在线| 视频一区亚洲 | 久久久久久久国产精品| 久久精品国产亚洲AV无码男同 | 韩国日本美国免费毛片| 日韩av电影资源网| 欧美日韩亚洲综合| 久久成年人网站| 一区二区三区视频免费视频观看网站 | 久久精品福利视频| 久久无码精品丰满人妻| 99国产精品视频免费观看一公开| 清纯唯美亚洲综合| 亚洲视频一区在线播放| 国产精品1区二区.| 精品欧美国产一区二区三区不卡| 国产毛片在线看| 亚洲欧美成人一区二区三区| 国产日本在线播放| 9i看片成人免费高清| 欧美三区在线视频| 无码人妻aⅴ一区二区三区玉蒲团| 久久97久久97精品免视看秋霞| 亚洲欧美激情另类校园| 欧美美女性生活视频| 国产一区视频在线观看免费| 国产a级全部精品| av中文字幕在线免费观看| 精品一区二区三区视频在线观看| av色综合网| 毛片在线播放网址| 亚洲人吸女人奶水| 国产在线观看福利| 国产一区二区三区| 亚洲人成网7777777国产| 91久久国产综合| 久久青草久久| 91青青草免费观看| 粉嫩av一区| 五月婷婷激情综合网| 久热在线视频观看| 免费久久精品| 欧美国产日韩在线| 中文字幕一区二区三区四区免费看| 成人精品一区二区三区中文字幕| 日韩av不卡播放| av老司机免费在线| 欧美精品少妇一区二区三区| 亚洲狠狠婷婷综合久久久久图片| 国产精品伦理久久久久久| 69视频在线免费观看| 97人妻精品一区二区三区动漫| 91亚洲精华国产精华精华液| 在线观看免费黄色片| 日韩国产激情| 亚洲国产又黄又爽女人高潮的| 久久噜噜色综合一区二区| 亚洲欧美日本视频在线观看| 1区1区3区4区产品乱码芒果精品| 国产精品一区二区婷婷| 天天爽夜夜爽夜夜爽精品视频| 五月激情五月婷婷| 免费欧美视频| 51ⅴ精品国产91久久久久久| 日本韩国免费观看| 亚洲一区视频在线观看视频| 在线播放av中文字幕| 精品久久久久久久久久久下田| 97精品国产91久久久久久| 国产女人高潮毛片| 欧美国产精品一区| 日日摸天天爽天天爽视频| 日韩欧美国产大片| 97国产在线观看| 日韩在线观看视频一区二区三区| 亚洲黄色性网站| 亚洲欧美日韩网站| 我不卡手机影院| 成人福利视频网| 成人p站proumb入口| 欧美丝袜一区二区三区| 男男做爰猛烈叫床爽爽小说 | 久久久久久久爱| 国产综合无码一区二区色蜜蜜| 亚洲精品欧美综合四区| 亚洲欧美日韩网站| 综合精品久久| 亚洲综合av影视| caoporm免费视频在线| 91精品欧美一区二区三区综合在 | 婷婷亚洲久悠悠色悠在线播放| 大桥未久恸哭の女教师| 在线国产精品一区| 精品国产_亚洲人成在线| 51精品在线| 日韩激情第一页| 在线永久看片免费的视频| 久久久久一区二区三区四区| 手机看片福利盒子久久| 成人3d精品动漫精品一二三| 国产欧美韩国高清| 欧美尤物美女在线| 日韩欧美一级二级三级久久久| 欧美成人精品一区二区免费看片| 粉嫩av一区二区三区| 欧日韩免费视频| 亚洲三级网页| 国产精品老牛影院在线观看| 黄色网在线看| 精品久久人人做人人爱| 国产精品久久久久久久妇| 国产色产综合产在线视频| 777一区二区| 亚洲小说欧美另类婷婷| 久久99精品国产99久久| yiren22亚洲综合| 亚洲网站在线看| 国产美女主播在线观看| 亚洲一区二区三区四区五区中文| 蜜臀av一区二区三区有限公司| 蜜桃传媒麻豆第一区在线观看| 成年人视频大全| 日韩理论电影中文字幕| 国产欧美精品xxxx另类| 黄页在线观看免费| 亚洲欧美在线看| 99视频国产精品免费观看a| 午夜视频在线观看一区二区三区| 国产高清一区二区三区四区| 国产一区在线观看麻豆| 97国产精东麻豆人妻电影| 超碰成人久久| 精品国产综合区久久久久久| 久久er热在这里只有精品66| 欧美精品久久一区二区| 国产成人天天5g影院在线观看| 欧美一区二区三区在线观看 | 精品一区二区国产| 欧美爱爱视频| 欧美亚洲成人网| 麻豆视频在线| 亚洲欧美日韩一区二区在线| 国产富婆一级全黄大片| 91黄色免费看| 懂色av.com| 国产精品久久久久久久久久久免费看| av电影中文字幕| 美女免费视频一区二区| 5月婷婷6月丁香| 国产精品magnet| 亚洲欧美电影在线观看| 亚洲精品推荐| 国产伦精品一区二区三区免| 色999久久久精品人人澡69| 91a在线视频| 色呦呦在线资源| 久久久999精品视频| 国产高清视频在线观看| 亚洲国产精品久久精品怡红院| 一起草av在线| 欧洲av一区二区嗯嗯嗯啊| 日韩 国产 在线| 亚洲最新视频在线观看| 日韩在线观看免| 欧美激情一区二区三区| 中文精品在线观看| 成人视屏免费看| 91精产国品一二三| 狠狠狠色丁香婷婷综合激情| 久久久精品麻豆| 狂野欧美性猛交xxxx巴西| 国产乱子伦农村叉叉叉| 在线 亚洲欧美在线综合一区| 中文字幕免费高| 色小子综合网| 亚洲午夜在线观看| 青青草综合网| 亚洲成色最大综合在线| re久久精品视频| 亚洲国产精品一区二区第四页av| 九九综合在线| 日韩欧美亚洲日产国产| 精品国产日韩欧美| 视频在线一区二区三区| 欧美色女视频| 一区二区视频在线观看| 99re66热这里只有精品8| 亚洲精品国产一区| 欧美国产美女| 成人免费看片视频在线观看| 亚洲精品国产偷自在线观看| 热这里只有精品| 欧美三级不卡| 日韩视频免费播放| 翔田千里一区二区| 毛葺葺老太做受视频| 全国精品久久少妇| 91高清国产视频| 国产剧情一区二区三区| 国产精品亚洲一区二区无码| caoporm超碰国产精品| 成人无码www在线看免费| 久久久天堂av| 亚洲AV成人无码网站天堂久久| 中文字幕佐山爱一区二区免费| 欧美 日韩 国产 一区二区三区| 亚洲午夜激情网站| www毛片com| 欧美日韩www| 亚洲精品国产手机| 亚洲欧美日韩中文视频| 在线激情免费视频| 欧美激情在线有限公司| 欧美黄色网页| 91久久精品国产| 国内自拍欧美| 日韩啊v在线| 欧美va天堂| 国产精品动漫网站| 激情综合色综合久久| avtt香蕉久久| 国产精品国产三级国产普通话蜜臀 | 成人在线中文字幕| 日韩av网址大全| 中文字幕中文字幕在线中心一区| 亚洲视频精品| 美女网站免费观看视频| 国产91高潮流白浆在线麻豆| www.中文字幕av | 久久夜色精品亚洲| 欧美男女性生活在线直播观看| www.国产黄色| 伊人久久免费视频| 福利写真视频网站在线| 国产精品久久久久久av下载红粉 | 在线观看国产一区| 99国产精品| 国产又粗又猛大又黄又爽| 成人免费精品视频| 中文字幕在线成人| 久久久久亚洲av无码专区喷水| 日本午夜精品视频| 日本午夜在线视频| 精品免费一区二区| 欧美激情亚洲国产| 日韩精品三区| 国产精品xxx在线观看www| 精品日韩一区| 精品国产av无码一区二区三区| 秋霞午夜av一区二区三区| 男男一级淫片免费播放| 综合久久久久久| 无码人妻精品一区二区50| 欧美精品一区二区久久久| 在线观看的av| 热久久99这里有精品| 91欧美极品| 特级黄色录像片| 裸体一区二区三区| 久久久久久九九九九九| 亚洲国产另类av| 国产乱人乱偷精品视频| 一区二区三区四区精品| 成人观看网址| 精品一区国产| 亚洲国产精品第一区二区三区| 欧美性受xxxx黒人xyx性爽| 国产精品久久久久久户外露出| 免费黄色av片| 亚洲女同性videos| 中文字幕在线官网| 精品蜜桃一区二区三区| 中国女人久久久| 动漫美女无遮挡免费| 一级做a爱片久久| 国产白浆在线观看| 欧美xxxx综合视频| 国产成人免费视频网站视频社区| 亚洲欧美国产精品桃花| 日日夜夜精品视频免费| 国产三级av在线播放| 色悠悠亚洲一区二区| 国外av在线| 国产精品va在线| 国产欧美一区二区精品久久久| 日本中文字幕片| 久久这里只有精品6| 日韩黄色一级视频| 一区二区欧美久久| 久久精品国产福利| 中文网丁香综合网| 国产一区二区三区高清播放| 午夜精品一区二区三区视频| 日韩午夜激情免费电影| 日本在线视频网址| 含羞草久久爱69一区| 免费亚洲婷婷| 欧美日韩中文字幕视频| 91精品在线免费| 高清电影在线免费观看| 久久福利电影| 日韩国产成人精品| 欧美做爰啪啪xxxⅹ性| 欧美成人激情免费网| 2020日本在线视频中文字幕| 欧洲在线视频一区| 久久狠狠亚洲综合| 九九视频在线免费观看| 精品在线观看国产| 成人一级视频| 日本a级片在线观看| av成人老司机| 国产精品第6页| 欧美极品美女电影一区| 一区二区三区视频免费观看| 日韩大片一区二区| 亚洲一区av在线| 黄色在线视频观看网站| 国产色婷婷国产综合在线理论片a| 中文字幕一区二区三区乱码图片| 亚洲中文字幕无码一区| 欧美天堂一区二区三区| 美洲精品一卡2卡三卡4卡四卡| 牛人盗摄一区二区三区视频| 精品无人码麻豆乱码1区2区| 免费毛片一区二区三区| 亚洲最新av在线| 动漫av一区| 亚洲涩涩在线观看| 欧美日韩国产色| av网站导航在线观看免费| 欧美一区1区三区3区公司| 国产经典欧美精品|