Swiftui 进度视图隐藏

Far*_*oko 5 uiprogressview swift swiftui

您好,我想在栏按钮项目上制作未确定的进度视图。完成后我想将其隐藏,但hidden()方法没有像disabled(Bool)这样的参数。任务完成后如何隐藏进度视图?

这就是我要的 在此输入图像描述

我不知道如何在 swiftui 上以编程方式隐藏它,因为它没有参数。

这是代码

.navigationBarItems(leading:
   Button(action: {
      self.presentationMode.wrappedValue.dismiss()
   }, label: {
        Text("Cancel")
            .foregroundColor(.orange)
    })
 , trailing:
    //this should be hidden when the work done not always
    ProgressView()
        .hidden()
  )
Run Code Online (Sandbox Code Playgroud)

dav*_*dev 9

您可以创建该 ViewExtension

extension View {
    @ViewBuilder func isHidden(_ isHidden: Bool) -> some View {
        if isHidden {
            self.hidden()
        } else {
            self
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后动态隐藏视图:

struct ContentView : View {
    
    @State var isHidden = false
    
    var body : some View {
        
        NavigationView {
            VStack {
                Text("Hello World")
            
                Button(action: {
                    self.isHidden.toggle()
                })
                {
                    Text("Change loading")
                }
            }
            .navigationBarItems(leading:
               Button(action: {
               }, label: {
                    Text("Cancel")
                        .foregroundColor(.orange)
                })
             , trailing:
                ProgressView()
                .isHidden(isHidden) //<< isHidden takes a bool whether it should be hidden
            )
        }
    }
}
Run Code Online (Sandbox Code Playgroud)