본문 바로가기
Application/Swift

22.03.28 Picker-View 구현 및 Delegate

by 가나닩 2022. 3. 29.

5장

 

▷ 피커 뷰(Picker-View)(Picker) : 원하는 항목을 선택할 수 있게 해주는 객체

- 아웃렛 변수 : 피커뷰, 레이블(현재 이미지명 표시), 이미지뷰

- 기타 : 레이블

 

구현된 Picker-View

 

※ 클래스 상속 : 부모 클래스의 변수 및 함수를 상속받아 자식 클래스에서 사용한다.

- 부모 클래스 : 상속하는 클래스

- 자식 클래스 : 상속받는 클래스

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