//
//  ViewController.swift
//  PickerView
//
//  Created by 맥 on 2022. 4. 4..
//  Copyright © 2022년 맥. All rights reserved.
//

import UIKit

class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
    let maxNUM = 3
    let pickerCoulmn = 2
    let pickerViewHeight:CGFloat = 80
    var imgArray = [UIImage?]()
    var imgArray2 = [UIImage?]()
    var imgFileName1 = [ "top1.png", "top2.png", "top3.png" ]
    var imgFileName2 = [ "pants1.png", "pants2.png", "pants3.png" ]
    
    @IBOutlet var pickerView: UIPickerView!
    @IBOutlet var imgView: UIImageView!
    @IBOutlet var imgView2: UIImageView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        
        for i in 0 ..< maxNUM {
            let img = UIImage(named: imgFileName1[i])
            imgArray.append(img)
        }
        imgView.image = imgArray[0]
        
        for i in 0 ..< maxNUM {
            let img2 = UIImage(named: imgFileName2[i])
            imgArray2.append(img2)
        }
        imgView2.image = imgArray2[0]
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
    func numberOfComponents(in pickerView: UIPickerView) -> Int {
        return pickerCoulmn
    }
    
    func pickerView(_ pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat {
        return pickerViewHeight
    }
    
    // return can select pickerView`s row
    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        if component == 0 { return imgFileName1.count }
        else { return imgFileName2.count }
    }
    
    func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {
        if component == 0 {
            let imgView = UIImageView(image: imgArray[row])
            imgView.frame = CGRect(x: 0, y: 0, width: 100, height: 200)
            
            return imgView
        }
        else {
            let imgView2 = UIImageView(image: imgArray2[row])
            imgView2.frame = CGRect(x: 0, y: 0, width: 100, height: 200)
            
            return imgView2
        }
    }
    
    // return show img in imgView
    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        if component == 0 { imgView.image = imgArray[row] }
        else { imgView2.image = imgArray2[row] }
    }
}

 

let pickerCoulmn = 2

 

pickerView의 최대 열을 설정한다.

pickerView를 하나만 넣어도 pickerCoulmn 값을 설정해서 조절할 수 있다.

 

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        if component == 0 { return imgFileName1.count }
        else { return imgFileName2.count }
    }

 

pickerView~와 같은 func(함수)들은 이름을 바꿀 수 없다. 그렇다고 두 개 이상을 작성할 수도 없다.

pickerColumn으로 picker를 두 개 설정해서 각각 받아들여야 하는데 그럴 때는 어떡할까?

component를 이용한다. 첫 번째 component는 0, 두 번째는 1, ... 이런 식의 값을 가져 IF 문을 활용하면 된다.

 

+ Recent posts