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()
?