2017-01-20 3 views
0

스위프트 3에서 작동하며 라디오 버튼처럼 동작하는 확인란을 만들려고합니다. 나는 나 자신을 설명한다 : 나는 8 개의 단추가있다; 각각에는 "확인되지 않은"이미지와 "확인 된"이미지가 있습니다. 나는 단 하나의 버튼 만 선택해야한다. (그래서, ITS의 "checked"이미지를 보여준다.) 라디오 버튼의 원리. 그래서 나는이했습니다 각 버튼으로 @IBAction를 사용하여 시도 :스위프트 라디오 버튼 - CheckBoxes - 스위프트 3

@IBAction func tona1_changed(_ sender: Any) { 
if test_tona1.isSelected == true 
     { 
      test_tona1.setBackgroundImage(UIImage(named: "0b_unchecked"), for: UIControlState.normal) 

      test_tona1.isSelected = false 
     } 
     else 
     { 
      test_tona1.setBackgroundImage(UIImage(named: "0b_checked"), for: UIControlState.normal) 

      test_tona1.isSelected = true 
     }} 

실제로 사이의 이미지 전환을 "을 선택 해제"와 "확인"하지만 난 전혀 그것을 확인하는 방법을 모른다 다른 버튼과 상호 작용합니다. 버튼의 태그가있는 배열을 사용하려고했지만 작동하지 않습니다. 나도 수업을 만들려고했지만 어떻게 작동 할 수 있는지 모르겠다. 감사합니다.

답변

1

여러 가지 방법으로 달성 할 수 있습니다. 가장 사소한 것 중 하나는 다음과 같습니다.

  • 데이터 소스가 있어야합니다. 대부분 배열입니다.
  • 데이터 원본의 각 항목에 대해 UIButton을 만들고 각 단추를 다른 배열에 삽입하십시오. 각 버튼에는 배열의 색인에 해당하는 태그가 있습니다. 또한 선택한 상태 및 표준에 대해 서로 다른 이미지를 설정하십시오.
  • 대상 함수가 같은 인으로, 각 버튼에 대한 작업을 추가

    func buttonPressed(sender:UIButton) { 
        for button in buttons { 
         button.isSelected = false 
         // deselect your model datasource[button.tag] 
        } 
    
        sender.isSelected = true 
        // select your model datasource[button.tag] 
    } 
    

나는 당신에게 추상화/개선/안전을 둡니다. 요점은 버튼 모음을 사용하고, 반복하고, 적절하게 선택/선택 취소하고, 이 아니라이 아니라면 버튼 태그를 매번 확인하는 큰 if/else를 사용하는 것입니다.

+0

그는 또한 인터페이스 빌더에서 코드 – muescha

+0

으로 'Outlet Collection'으로 그램을 그릴 수 있습니다. 그래도 Outlet Collection으로 주문이 존중되지 않도록주의하십시오. viewDidLoad의 태그로 정렬해야하는데, 이는 약간 "해킹 된"것처럼 보일 수 있습니다. –