热门标签 | HotTags
当前位置:  开发笔记 > IOS > 正文

呈现工作表时,不触发SwiftUIonDismiss(XcodeBeta5)

如何解决《呈现工作表时,不触发SwiftUIonDismiss(XcodeBeta5)》经验,为你挑选了1个好方法。

在SwiftUI中,我试图在关闭工作表但不调用'onDismiss'闭包后运行一些代码。

我正在运行Xcode Beta 5,目标是IOS 13

import SwiftUI

struct ModalView : View {
    @Environment(\.presentationMode) var presentationMode: Binding
    var body: some View {
        Group {
            Text("Modal view")
            Button(action: { print("Dismiss button pressed"); self.presentationMode.value.dismiss() }) { Text("Dismiss") }
        }
    }
}

struct ContentView: View {
    @State var showModal: Bool = false
    var body: some View {
        Button(action: { self.showModal = true }) { Text("Show modal via .sheet modifier") }
        .sheet(isPresented: $showModal, onDismiss: { print("Modal Dismissed") }) { ModalView() }


    }
}

我应该看到:

Dismiss Button Pressed
Modal Dismissed

但我只会

Dismiss Button Pressed

我是不是在做一些愚蠢的事情,或者这是另一个beta问题?



1> graycampbell..:

您的代码对我来说很好。onDismiss当您使用滑动手势关闭模态视图时(如您所料)会被调用,但是当您self.presentationMode.value.dismiss()用来关闭模态视图时不会被调用,这对我来说似乎是个错误。我看不出您的代码无法正常工作的任何原因。

同时,一种解决方法是将onDismiss闭包传递给您ModalView,然后在调用后调用它self.presentationMode.value.dismiss()


推荐阅读
author-avatar
chucai
这个家伙很懒,什么也没留下,只留下了这个默认个签!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有