Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 按钮文本未使用@state从其自身操作更新_Swift_Swiftui - Fatal编程技术网

Swift 按钮文本未使用@state从其自身操作更新

Swift 按钮文本未使用@state从其自身操作更新,swift,swiftui,Swift,Swiftui,我对如何根据状态正确更新视图按钮的颜色有点困惑。如果我没有弄错的话,当用户允许摄像头访问时,self.cameraOK为true,但按钮颜色不变。我需要再按一下按钮才能看到颜色的变化。为什么会发生这种行为 此外,由于我对swift还相当陌生,因此鼓励对良好标准提出任何其他建议 代码如下: @State var cameraOK: Bool = false @State var photosOK: Bool = false var body: some View

我对如何根据状态正确更新视图按钮的颜色有点困惑。如果我没有弄错的话,当用户允许摄像头访问时,
self.cameraOK
true
,但按钮颜色不变。我需要再按一下按钮才能看到颜色的变化。为什么会发生这种行为

此外,由于我对swift还相当陌生,因此鼓励对良好标准提出任何其他建议

代码如下:

    @State var cameraOK: Bool = false
    @State var photosOK: Bool = false
    
    var body: some View {
        VStack(alignment: .leading) {
            ...
            Button(action: {
                if permissions.giveCameraAccess() {
                    self.cameraOK = true
                }
            })  {
                Text("Enable access to your camera")
                    .font(Font.custom("Inter", size: 16))
                    .foregroundColor(self.cameraOK ? Color(red: 0, green: 1, blue: 0.2) : Color(red: 1, green: 0.68, blue: 0.2) )
                    .fontWeight(.regular)

我认为当用户给出相机访问的假设是不正确的,而你只是没有得到分配。在那一行设置断点,你就会看到你什么时候到达那里。你是对的-权限弹出窗口正在显示,但在等待弹出窗口获得答复之前,它会跳到下一条指令。对于那些对如何延迟请求权限感兴趣的人:显示更多代码:你在
权限中做什么。giveCameraAccess()