스토리보드 상에서 Delegate, DataSource 설정

또는 코드상에서 Delegate, DataSource 설정

@IBOutlet weak var pkvKeyList: UIPickerView!

override func viewDidLoad() {
    pkvKeyList.delegate = self
    pkvKeyList.dataSource = self
}

 

    // PickerView Delegate
    
    // 열 개수를 설정
    func numberOfComponents(in pickerView: UIPickerView) -> Int {
        return 1
    }
    
    // 행의 개수 전달
    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        return arrray.count
    }
    
    // 각 행의 제목 설정
    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        return array[row]
    }
    
    // 선택되었을 때 무엇을 할 것인지?
    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        lblISomething.text = array[row]
    }

 

 

 

ViewController 클래스에서 UIPickerViewDelegate, UIPickerViewDataSource를 상속받고, 위 코드의 위치는 액션 함수 밑에 위치시킨다.

피커뷰에서 각 행을 문자 대신 그림으로 만드는 방법, 위의 예에서 ‘각 행의 제목 설정 부분’을 다음으로 대체한다.

    // 이미지 피커 뷰 설정
    func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {
        let imageView = UIImageView(image:imageArray[row])
        imageView.frame = CGRect(x: 0, y: 0, width: 100, height: 150)
        
        return imageView
    }
    
    // 피커 뷰 높이 전달
    func pickerView(_ pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat {
        return 80
    }

문의 | 코멘트 또는 yoonbumtae@gmail.com


카테고리: Swift


0개의 댓글

답글 남기기

Avatar placeholder

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다