>

현재 5 개의 버튼이있는 셀이 있는데 하나의 버튼을 누르면 흰색으로 바뀌고 다른 버튼은 모두 검은 색으로 바뀝니다. 버튼에는 별도의 체크 표시 이미지보기가 있으며, 버튼의 선택 여부에 따라 확인 또는 선택 해제됩니다. 그래서 지방이 imageView에서 작동합니다 :

@IBAction func changeColor(_ sender: Any) {
        guard let button = sender as? UIButton else {
            return
        }
        self.selectedCheckMarkImageView1.isHidden = button.tag != 1
        self.selectedCheckMarkImageView2.isHidden = button.tag != 2
        self.selectedCheckMarkImageView3.isHidden = button.tag != 3
        self.selectedCheckMarkImageView4.isHidden = button.tag != 4
        self.selectedCheckMarkImageView5.isHidden = button.tag != 5
}

그러나 버튼 이미지를 변경하기 위해 동일한 접근 방식을 사용하려고 할 때 :

button.setImage(UIImage(named: "LR - Nano White - Selected")!, for: .normal) = button.tag != 1

오류가 발생합니다 :

와이즈 비즈

다음과 같이 switch 문에 넣었습니다 :

Cannot assign to value: function call returns immutable value

그러나 오류가 발생합니다 :

와이즈 비즈

이 문제를 해결하는 방법에 대한 아이디어가 있습니까?

switch (button.tag) { case != 1: //error occurs here default: // }

  • 답변 # 1

    스위치는 하나의 실행 분기를 선택하기 위해 다른 값이 여러 값의 수정 세트와 비교되는 1 값을 대체합니다. 여러 개의 다른 값에 대해 여러 개의 값을 확인하고 여러 개의 다른 작업을 수행하는 상황이 있습니다. 단일 스위치로는 실제로이를 대체 할 수 없습니다.

    대신 for 를 사용하여 반복을 줄이는 것이 좋습니다.  루프.

    let selectedCheckMarkImageViews = [
        selectedCheckMarkImageView1,
        selectedCheckMarkImageView2,
        selectedCheckMarkImageView3,
        selectedCheckMarkImageView4,
        selectedCheckMarkImageView5,
    ]
    let visbleImageViewIndex = button.tag // TODO: either number these 0..<4, or add 1 below
    for (index, view) in selectedCheckMarkImageViews.enumerated() {
        view.isHidden = visbleImageViewIndex != index
    }
    
    

  • 답변 # 2

    시도

    switch (button.tag) {
            case _ where button.tag != 1: 
    
            default:
               //
            }
    
    

  • 이전 java - snakeyaml을 사용하여 yaml 파일로 모든 어린이 (및 하위 하위)를 얻는 방법
  • 다음 내 Google Compute Engine 인스턴스의 산발적 인 Google 404