Archive/Doit 아이폰 앱(입문)

PickerView - 코드리뷰

lgvv 2021. 3. 2. 12:27

PickerView.zip
7.71MB

//
//  ViewController.swift
//  PickerView
//
//  Created by Hamlit Jason on 2021/02/21.
//

import UIKit

/*
 스토리보드에서 피커뷰를 뷰컨트롤러로 컨트롤+ 마우스로 델리게이트 연결이 중요하다.
 왜냐하면, 스토리 보드를 보면 우리가 원한 정보가 아닌데, 이걸 연결해주기 위함.
 */

class ViewController: UIViewController, UIPickerViewDelegate,UIPickerViewDataSource {
    
    var imageArray = [UIImage?]()
    let PICKER_VIEW_HEIGHT:CGFloat = 80
    
    func pickerView(_ pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat {
        return PICKER_VIEW_HEIGHT // 피커 뷰 룰렛의 높이 재정의
    }
    func numberOfComponents(in pickerView: UIPickerView) -> Int {
        return PICKER_VIEW_COLUMN /* 피커뷰에게 컴포넌트의 수를 정수 값으로 넘겨주는 델리게이트 메서드입니다. 즉, 피커뷰에 표시되는 열의 갯수를 의미한다.*/
    }
    
    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        return imageFileName.count /* 피커뷰에게 컴포넌트의 열의 갯수를 넘겨준다. 즉, 해당 열에서 선택할 수 있는 행의 갯수이다. */
    }
    /* 이 코드는 피커에 타이틀을 설정하는 메소드
    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        return imageFileName[row] /* 피커뷰의 각 열의 타이틀을 문자열 값을 넘겨준다. 여기서는 이미지 파일네임에 저장되어 있는 파일 명을 넘겨준다.*/
    }*/
    
    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        lbImageFileName.text = imageFileName[row] // 선택된 거 세팅
        imageView.image = imageArray[row] // 선택된 거 세팅
    }
    
    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
    }

    let MAX_ARRAY_NUM = 10 // 이미지 파일명을 저장ㅎ할 배열의 최대크기
    let PICKER_VIEW_COLUMN = 1 // 피커 뷰의 열의 개수
    var imageFileName = [ "1.jpg", "2.jpg", "3.jpg", "4.jpg", "5.jpg", "6.jpg", "7.jpg", "8.jpg", "9.jpg", "10.jpg", ]
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        for i in 0 ..< MAX_ARRAY_NUM {
            let image = UIImage(named: imageFileName[i])
            imageArray.append(image)
        }
        lbImageFileName.text = imageFileName[0] // 처음 이미지 세팅
        imageView.image = imageArray[0] // 처음 이미지 세팅
    }

    @IBOutlet var lbImageFileName: UILabel!
    
    @IBOutlet var pickerView: UIPickerView!
    @IBOutlet var imageView: UIImageView!
}

 

 

피커뷰 사용시 알아두어야 할 점.

 1. 스토리보드에서 delegate 연결을 해줘야 하는데 맨위의 점 세개 있는데 그 중 맨 앞부분에 컨트롤 누르고 피커뷰를 연결하면 된다.

 

피커뷰 사용 방법

 1. numberOfComponent -> 선택할 수 있는 행이 몇개인가 즉, 열이 몇개가 있는가

 2. pickerview( numberOfComponent) 선언 - > 즉, 한 열에 행이 몇개가 있는가

 3. pickerview(height) 사용 -> 리사이즈 핸들링으로 적용되지 않는 경우도 있고, 이렇게 코드로 하면 확실하게 가능 각 열의 높이는?

 4. pickerview(viewForrow) - > 각 행 즉, 하나의 요소에 대한 정보를 얘가 가지고 기록한다. 얘는 여러번 호출된다.

 5. pickerview(didselect) -> 각 행이 선택되었을 때 호출되는 메소드

 

추후에 업데이트 예정

 

'Archive > Doit 아이폰 앱(입문)' 카테고리의 다른 글

Web - 코드리뷰(웹뷰)  (0) 2021.03.02
Alert - 코드리뷰  (0) 2021.03.02
DatePicker - 코드리뷰 (타이머)  (0) 2021.03.02
ImageView - 코드리뷰  (0) 2021.03.02
오토 레이아웃  (0) 2021.03.01