swift 在if语句中有条件地隐藏按钮

1cklez4t  于 2022-12-21  发布在  Swift
关注(0)|答案(2)|浏览(125)

我是一个相当新的编码,所以这个问题可能是一个重复,但我似乎不能把我的头围绕它。
问题是我想在用户授予权限后隐藏“RequestPermission”按钮。

VStack {
                Button("Request Permission") {
                    UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound]) { success, error in
                        if success {
                            print("All set!")
                                .isHidden
                        } else if let error = error {
                            print(error.localizedDescription)
                            
                        }
                    }
                }

我得到的错误代码如下:元组类型“()”的值没有成员“isHidden”
我希望你能帮我-
先谢谢你。

hsgswve4

hsgswve41#

您可以在@State中保持按钮的可见性。

struct SwiftUIView: View {
@State var buttonIsVisible: Bool = true

var body: some View {
    VStack {
        if buttonIsVisible {
            Button("Request Permission") {
                UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound]) { success, error in
                    if success {
                        buttonIsVisible = false
                        print("All set!")
                    } else if let error = error {
                        print(error.localizedDescription)
                        
                    }
                }
            }
        }
    }
}
zzwlnbp8

zzwlnbp82#

我真的不明白你想要什么,但如果你只是想隐藏和显示按钮后,按钮点击状态成功与否,你可以只做如下:

import SwiftUI
import SwiftUIX

struct Authenticate: View {

   @State var isAuthenticated: Bool = false

   var body: some View {
       VStack {
           Button(action: {
               UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound]) { success, error in
                   if success {
                       self.isAuthenticated = success
                   } else if let error = error {
                       print(error.localizedDescription)
                   }
               }
           }, label: {
               Text("Request Permission")
                   .padding()
                   .background(authenticateButtonBackground)
                   .hidden(isAuthenticated)
           })
           .disabled(isAuthenticated)
       }
   }

   var authenticateButtonBackground: some View {
       RoundedRectangle(cornerRadius: 10)
           .stroke(Color.black, lineWidth: 1)
   }
}

请注意**.hidden(isAuthenticated)来自SwiftUIX库,还请注意,我添加了.disabled(isAuthenticated)**以阻止用户单击它,即使它已经隐藏,无论如何,您可以去检查库,该库中有许多好东西可以方便地帮助您。我希望这是您正在寻找的。

相关问题