溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

IOS在SwiftUI中顯示模態(tài)視圖的實(shí)例代碼

發(fā)布時(shí)間:2020-09-12 22:07:08 來源:腳本之家 閱讀:219 作者:GarveyCalvin 欄目:移動(dòng)開發(fā)

簡(jiǎn)介

這里教大家如何彈出一個(gè)簡(jiǎn)單的模態(tài)視圖。分別有兩個(gè)頁面,ContentViewGCPresentedView,以下對(duì)應(yīng)簡(jiǎn)稱為A和B。我們要做的是在A視圖中點(diǎn)擊按鈕跳轉(zhuǎn)到B視圖,然后再?gòu)腂視圖點(diǎn)擊按鈕返回到A視圖。

步驟

在A視圖中創(chuàng)建按鈕和模態(tài)視圖代碼

struct ContentView: View {
  @State var isPresented = false
  
  var body: some View {
    Button(action: {
      self.isPresented = true
    }, label: {
      Text("Present Modally")
    })
    .sheet(isPresented: $isPresented) {
      GCPresentedView()
    }
  }
}

使用 @State 對(duì)屬性進(jìn)行修飾,在 SwiftUI 內(nèi)部會(huì)自動(dòng)轉(zhuǎn)換為一對(duì)getter,setter,對(duì)這個(gè)屬性進(jìn)行賦值時(shí)會(huì)觸發(fā)視圖更新。

$isPresented 能夠?qū)⒅狄茫ㄒ梅椒ㄊ窃谥登胺郊右粋€(gè)$符號(hào)),當(dāng)引用的值發(fā)生改變時(shí),這個(gè)改變會(huì)向外傳遞。

.sheet方法用于彈出一個(gè)模態(tài)視圖,在SwiftUI中的定義為。

public func sheet<Content>(isPresented: Binding<Bool>, onDismiss: (() -> Void)? = nil, @ViewBuilder content: @escaping () -> Content) -> some View where Content : View

在B視圖中創(chuàng)建按鈕和關(guān)閉模態(tài)視圖代碼

struct GCPresentedView: View {
  @Environment(\.presentationMode) var mode
  
  var body: some View {
    Button(action: {
      self.mode.wrappedValue.dismiss()
    }, label: {
      Text("Dismiss")
    })
  }
}

@Environment 獲取環(huán)境變量 presentationMode ,我們可以通過這個(gè)變量調(diào)用 wrappedValue.dismiss() 可以關(guān)閉模態(tài)視圖。

直接在 Xcode 運(yùn)行預(yù)覽

IOS在SwiftUI中顯示模態(tài)視圖的實(shí)例代碼

總結(jié)

使用 SwiftUI 框架處理界面方便很多,不用太多的定義,我們只需要將界面進(jìn)行描述出來就可以了。這個(gè)教程示例中使用到了 Button 和 Text 控件,也用到了@State, Binding, @Environment 技術(shù)點(diǎn)。教程很簡(jiǎn)單,放上來大家一起學(xué)習(xí),教程里的代碼已放在了GitHub上面,點(diǎn)擊這里獲取代碼 。

以上所述是小編給大家介紹的IOS在SwiftUI中顯示模態(tài)視圖的實(shí)例代碼,希望對(duì)大家有所幫助,也非常感謝大家對(duì)億速云網(wǎng)站的支持!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI