작성
·
208
·
수정됨
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을 활용하는 방법에 대한 설명이라고 보시면 될 것 같습니다.