여러 버튼을 사용할 때 SwiftUI 양식 컨테이너에서 예기치 않은 동작 [중복]

Nov 27 2020

아래 코드가 주어지면 버튼 ZERO을 탭한 후 선택 항목이 표시 될 것으로 예상 ZERO했지만 항상 ONE. 사실, 버튼 이름을 탭할 필요는 없지만 행 중간에 있으며 선택 항목은 여전히 ONE. 이는 예상치 못한 동작이며 버그 일 수 있습니다. 누구든지 이에 대한 설명 및 / 또는 해결 방법이 있습니까? iOS 14.0 및 Xcode 12.2 사용

struct TestForm : View {
    
    @State var selection = ""
    
    var body : some View {
        Form {
            Text("selection: \(selection)")
            HStack {
                Button(action: {
                    selection = "ZERO"
                }) {
                    Text("ZERO")
                }
                Spacer()
                Button(action: {
                    selection = "ONE"
                }) {
                    Text("ONE")
                }
            }
        }
    }     
}

답변

2 HarshilPatel Nov 27 2020 at 04:44

PlainButtonStyle ()을 사용하십시오 .

struct ContentView: View {
    @State var selection = ""
    
    var body : some View {
        Form {
            Text("selection: \(selection)")
            HStack {
                Button(action: {
                selection = "ZERO"
            }) {
                Text("ZERO")
                .foregroundColor(.blue)
            }.buttonStyle(PlainButtonStyle())
                
            Spacer()
                
            Button(action: {
                selection = "ONE"
            }) {
                Text("ONE")
                .foregroundColor(.blue)
            }.buttonStyle(PlainButtonStyle())
                    
            }
        }
    }
}

.foregroundColor(.blue)버튼에 추가 하면 버튼이 .buttonStyle(PlainButtonStyle())일반 텍스트처럼 보이기 때문에 버튼 텍스트에 추가 했습니다.