본문 바로가기
ios 뽀개기/ios앱

7 picker view

by 인생여희 2017. 11. 21.
반응형

picker view 간단하게 구현하기



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
//
//  ViewController.swift
//  pickerView
//
//  Created by MacBookPro on 2017. 11. 21..
//  Copyright © 2017년 MacBookPro. All rights reserved.
//
 
import UIKit
//피커뷰를 동작시키기위해서는 피컵 델리케이트 클래스를 상속받아야 한다.
//또 피커뷰의 델리게이트 메서드를 추가해야 한다.
 
class ViewController: UIViewController, UIPickerViewDelegate,UIPickerViewDataSource {
 
    let MAX_ARRAY_NUM = 4
    var imageArray = [UIImage?]() //uiimage 타입의 배열선언
    let PICKPER_VIEW_COLUMN = 1
    var imageFileName = ["chal.jpg","happy.jpg","joy.jpg","love.jpg"]
    
    //피커뷰 아웃렛 변수
    @IBOutlet weak var pickerImage: UIPickerView!
    //라벨 파일이름 아웃렛 변수
    @IBOutlet weak var lbFileName: UILabel!
    //이미지뷰 아웃렛 변수
    @IBOutlet weak var imageView: UIImageView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        //뷰가 로드되었을 때 max_array 개수 만큼 imagefileName에 있는 이미지를 가져와 uiimage타입의 상수 image에 할당하고
        //할당된 image를 배열 imageArray에 추가한다.
        //~ 4보다 작을때...
        for i in 0 ..< MAX_ARRAY_NUM {
            
            let image = UIImage(named: imageFileName[i])
            imageArray.append(image)
            
            lbFileName.text = imageFileName[0]
            imageView.image = imageArray[0]
        }
        
        
    }
 
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
 
    //1
    //피커뷰에게 컴포넌터의 수를 정수 값으로 넘겨주는 델리게이트 메서드이다.
    //피커뷰의 컴포넌트는 피커 부에 표시되는 열의 개수를 의미 한다.
    public func numberOfComponents(in pickerView: UIPickerView) -> Int{
        //1
        return PICKPER_VIEW_COLUMN
    }
    
    //2
    // 피커뷰에게 컴포넌트의 열의 개수를 정수 값으로 넘겨줍니다. 이 값은 피커 뷰의 해당 열에서 선택할 수 있는 행의 개수(데이터개수)를 의미한다.
    // 여기에서는 배열의 개수 값인 4를 넘겨준다.
    public func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int-> Int{
        return imageFileName.count
    }
    
    //3
    //titleForRow 인수를 가지는 델리게이트 메서드입니다. 피커 뷰에게 컴포넌트의 각 열의 타이틀을 문자열 값으로 넘겨준다.
    //여기서는 파일명을 넘겨 준다.
    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int-> String? {
        return imageFileName[row]
    }
    //4
    //사용자가 피커뷰의 롤렛에서 선택한 row값을 사용하여 배열에서 row값에 해당하는 문자열을 가지고 온다.
    //그리고 가져운 문자열을 레이블의 아울렛변수에 저장한다.
    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        lbFileName.text = imageFileName[row]
        
        //피커뷰의 롤렛이 선택되었을 때 동작하는 didselectrow 인수가 포함된 델리게이트 메서드의 맨 아랫 부분에
        //선택한 이미지를 이미지뷰에 나타내주는 코드를 추가한다.ㅇ
        imageView.image = imageArray[row]
    }
    
    
}
 
 
cs


한번더 정리

//빈배열선언

// var name = [String]()

// var score = [Int]()

//name.append("나")

//score.append(1)

import UIKit


class ViewController: UIViewController,UIPickerViewDelegate, UIPickerViewDataSource {


    @IBOutlet weak var imageView: UIImageView!

    @IBOutlet weak var label: UILabel!

    @IBOutlet weak var pickerView: UIPickerView!

    

    let MAX_ARRAY_NUM = 4

    let PICKER_VIEW_COLUM = 1

    var imageFileName = ["aaa.jpg","bbb.jpg","ccc.jpg","ddd.jpg"]

    var imageArray = [UIImage?]()

    

    //화면이 로드 될때

    override func viewDidLoad() {

        super.viewDidLoad()

       //이미지를 차례대로 넣기

        for i in 0 ..< MAX_ARRAY_NUM{

            let image = UIImage(named:imageFileName[i])

            imageArray.append(image)

        }

        

        imageView.image = UIImage(named:imageFileName[0])

        label.text = imageFileName[0]

    }


    //피커뷰 칼럼 수

    func numberOfComponents(in pickerView: UIPickerView) -> Int {

        return PICKER_VIEW_COLUM

    }

    

    //데이터 행의 개수

    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) {

        label.text = imageFileName[row]

        imageView.image = imageArray[row]

    }

    

}


반응형

'ios 뽀개기 > ios앱' 카테고리의 다른 글

9 alert 경고창 띄우기  (0) 2017.11.22
8 picker view 응용  (0) 2017.11.21
6 데이터 피커 날짜함수  (0) 2017.11.21
5 사진 확대 축소 변경  (0) 2017.11.20
4 버튼 action함수  (0) 2017.11.20

댓글