disabled UIbutton을 enable 하는법을 알려주세요!

태그: 

3 답변 글타래를 보이고 있습니다
  • 글쓴이
    • Stacey Dee
      참가자
      • 글작성 : 1
      • 답글작성 : 2

      안녕하세요, iOS 초보 입니다!

      제 메인스토리 보드에는 두 가지의 버튼이 있어요!  ‘오늘’버튼과 ‘내일’버튼.

      일단 아웃렛으로 연결해주었습니다.

      @IBOutlet weak var todayBtnOutlet: UIButton!
      @IBOutlet weak var tmrwBtnOutlet: UIButton!

      처음 유저가 앱을 실행시키면 ‘오늘’버튼은 enabled, ‘내일’버튼은 disabled 상태이길 바래서 viewDidLoad()에 아래 코드를 삽입했습니다.

      override func viewDidLoad() {
      super.viewDidLoad()
      todayBtnOutlet.isEnabled = true
      tmrwBtnOutlet.isEnabled = false
      }

      ‘내일’ 버튼을 누르면 ‘오늘’ 버튼이 disabled 된 후 ‘내일’ 버튼이 enabled되고 

      반대로 ‘오늘’ 버튼을 누르면 ‘내일’ 버튼이 disabled 된 후 ‘오늘’ 버튼이 enabled 되게 하고싶어서 이렇게 적어보았습니다.

      부끄럽습니다.. 중구난방 코드입니다.. ㅠ_ㅠ

      @IBAction func todayBtn(_ sender: UIButton) {

      if tmrwBtnOutlet.isEnabled == true {
      tmrwBtnOutlet.isEnabled = false
      todayBtnOutlet.isEnabled = true
      }
      todayBtnOutlet.isEnabled = true
      }

      @IBAction func tmrwBtn(_ sender: UIButton) {

      if todayBtnOutlet.isEnabled == true {
      todayBtnOutlet.isEnabled = false
      tmrwBtnOutlet.isEnabled = true
      }
      tmrwBtnOutlet.isEnabled = true
      }

       

      하지만 stack overflow에서는 viewDidLoad() 에서 버튼을 disabled 시켰으므로 더 이상 무얼 할 수 없다고 합니다.

      제가 올린 질문의 링크입니다. >> 

      https://stackoverflow.com/questions/62484450/swift5-how-to-disable-uibutton-when-the-other-button-is-enabled

       

      더 구글링 해보니 저처럼 disabled button을 enabled 하고 싶었던 분은 처음엔 viewWillApper()을 썼지만, 오류가 나서 viewDidLoad()로 바꿔봤더니 된다고 하더라고요! ㅇㅁㅇ?!

      그 글의 링크입니다 >> https://stackoverflow.com/questions/41861489/how-to-enable-a-currently-disabled-button-in-swift

       

      초보를 살려주세요 부탁합니다 

    • 야곰
      키 마스터
      • 글작성 : 37
      • 답글작성 : 579
      class MyViewController : UIViewController {
      
          @IBOutlet var todayButton: UIButton!
          @IBOutlet var tomorrowButton: UIButton!
      
          override func viewDidLoad() {
              super.viewDidLoad()
      
              tomorrowButton.isEnabled = false
          }
      
          @IBAction func touchUpTodayButton(_ sender: UIButton) {
              todayButton.isEnabled = false
              tomorrowButton.isEnabled = true
          }
      
          @IBAction func touchUpTomorrowButton(_ sender: UIButton) {
              todayButton.isEnabled = true
              tomorrowButton.isEnabled = false
          }
      }
      

      위 코드처럼 했는데 제대로 동작하지 않는다는 말씀이신가요?
      어떤 문제가 있나요? 버튼이 활성화가 안되는건가요? 문제가 정확히 무엇인지 잘 모르겠습니다.
      버튼은 isEnabled 프로퍼티를 true로 해주면 다시 활성화가 됩니다.

      • Stacey Dee
        참가자
        • 글작성 : 1
        • 답글작성 : 2

        안녕하세요 야곰님!

        집필하신 스위프트 책으로 열심히 공부하고있습니다 ^0^

        써주신 코드 잘 작동하네요 너무 감사합니다 ♡

    • TTOzzi
      참가자
      • 글작성 : 10
      • 답글작성 : 13

      버튼이 눌렸을 때 원하는 동작을 하게 하려면 버튼이 enabled 된 상태여야 합니다. isEnabled 공식문서

      ‘내일’ 버튼의 isEnabled 속성을 false 로 설정해주셨으니 ‘내일’ 버튼을 눌러도 IBAction 은 실행되지 않습니다.

      반대 상황을 원하시는 거라면 야곰님의 코드를 참고하시면 되겠네요.

    • Stacey Dee
      참가자
      • 글작성 : 1
      • 답글작성 : 2

      안녕하세요 TTOzzi님! 

      링크걸어주신 isEnabled 문서 참고할게요 조언 감사합니다 ♡

3 답변 글타래를 보이고 있습니다
  • 답변은 로그인 후 가능합니다.

logo landscape small

사업자번호 : 743-81-02195
통신판매업 신고번호 : 제 2022-충북청주-1278 호
고객센터 : 카카오톡채널 @yagom