5장
▷ 피커 뷰(Picker-View)(Picker) : 원하는 항목을 선택할 수 있게 해주는 객체
- 아웃렛 변수 : 피커뷰, 레이블(현재 이미지명 표시), 이미지뷰
- 기타 : 레이블
※ 클래스 상속 : 부모 클래스의 변수 및 함수를 상속받아 자식 클래스에서 사용한다.
- 부모 클래스 : 상속하는 클래스
- 자식 클래스 : 상속받는 클래스
ex) class ViewController: UIViewController, UIPickerViewDelegate { ... }
: ViewController(자식 클래스)는 UIViewController(부모 클래스)와 UIPickerViewDelegate(부모 크래스)로부터 변수 및 함수를 상속받아 사용한다.
※ 델리게이트(Delegate)(대리자) : 객체가 할일을 대신 수행해주는 역할
- 객체의 행동을 단순화하면서 객체 간의 결합성을 최소화
- 문법 학습 필요
▷ 전체 코드
더보기
//
// ViewController.swift
// PickerView
//
// Created by 박성수 on 2022/03/25.
//
import UIKit
class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
let MAX_ARRAY_NUM = 10
let PICKER_VIEW_COLUMN = 1
var imageArray = [UIImage?]()
var imageFileName = [ "1.jpg", "2.jpg", "3.jpg", "4.jpg", "5.jpg", "6.jpg", "7.jpg", "8.jpg", "9.jpg", "10.jpg" ]
@IBOutlet var pickerImage: UIPickerView!
@IBOutlet var lblImageFileName: UILabel!
@IBOutlet var imageView: UIImageView!
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)
}
lblImageFileName.text = imageFileName[0]
imageView.image = imageArray[0]
}
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){
lblImageFileName.text = imageFileName[row]
imageView.image = imageArray[row]
}
}
델리게이트 참고 : https://zeddios.tistory.com/8 , [Swift] 델리게이트 패턴 iOS (tistory.com)
'Application > Swift' 카테고리의 다른 글
22.04.06 Map-view (0) | 2022.04.08 |
---|---|
22.03.30 Web-view (0) | 2022.03.31 |
22.03.29 Alert(얼럿)기능 구현 (0) | 2022.03.29 |