• 카테고리

    질문 & 답변
  • 세부 분야

    모바일 앱 개발

  • 해결 여부

    미해결

환율 네트워크처리1 질문있습니다.

23.03.14 21:43 작성 23.03.14 21:54 수정 조회수 162

0

안녕하세요 강의 41:46분에

pickerView 의 delegate중에서 didSelecRow에 관해서 궁금한게있는데 해당 delegate속성이 picker로인해 선택된 row를 반환해준다고 알고있습니다.

궁금한게[ didSeleectRow가있는 delegate메서드를 사용하려면 저는

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {

            selectedRow = row

   

    }

여기 함수안에서 


    var selectedRow = 0 {

        didSet {

            selectedCurrencyName.text = rates?[selectedRow].0

 

            selectedCurrency.text =  calculateCurrency()

        }

    }
위에 해당하는 코드를 작성해야 함수가 작동된다고 생각했는데 강사님 강의보니 그게아니더라구요 왜 그런건가요?

 


가만생각해보니 didSelecRow에서 현재 선택된 row정보만 얻기위한 용도로 pickerView didSelectRow 델리게이트 메서드를 이용했고 row정보를 얻었으니 화면에 뿌려주는 역활은 굳이 안해도되기떄문에 위의코드처럼 따로 didSet속성을 이용해서 화면을 나타낸걸로 이해했는데 제가 이해한게 맞을까요?

답변 1

답변을 작성해보세요.

0

이해안되시는 부분이 정확히 파악이 안되서 전체적으로 설명드립니다.

pickerview의 delegate를 연결을 했기 때문에 pickerView를 선택할 때 didSelectRow가 호출되는 것입니다.

didSelectRow에서는 선택한 row정보를 알 수 있으니 그 정보로 해야할 작업을 하게 됩니다.

 

아래 코드를 didSelectRow펑션 안에서 호출해도 됩니다.

selectedCurrencyName.text = rates?[selectedRow].0
selectedCurrency.text =  calculateCurrency()

 

강의에서는 didSet을 활용하는 방법에 대한 설명이라고 보시면 될 것 같습니다.