//
// 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 |