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 |
댓글