リンクのものを使ってUIPickerViewを作っています。
https://github.com/tottokotkd/PopUpPickerView
http://qiita.com/tottokotkd/items/b979d5e991b29431346c
それで、このViewを開いたときに、任意の値が選択されているようにしたいです。宜しくおねがします。
lang
1import UIKit 2class ViewController: UIViewController, PopUpPickerViewDelegate { 3 var pickerView: PopUpPickerView! 4 let array = ["test1", "test2", "test3", "test4", "test5"] 5 6 override func viewDidLoad() { 7 super.viewDidLoad() 8 9 pickerView = PopUpPickerView() 10 pickerView.delegate = self 11 if let window = UIApplication.sharedApplication().keyWindow { 12 window.addSubview(pickerView) 13 } else { 14 self.view.addSubview(pickerView) 15 } 16 17 let button = UIButton.buttonWithType(UIButtonType.ContactAdd) as UIButton 18 button.frame = CGRectMake(50, 100, 30, 30); 19 button.addTarget(self, action: "showPicker", forControlEvents: UIControlEvents.TouchDown) 20 self.view.addSubview(button) 21 } 22 func showPicker() { 23 pickerView.showPicker() 24 } 25 // for delegate 26 func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int { 27 return 3 28 } 29 func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 30 return array.count 31 } 32 func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! { 33 return array[row] 34 } 35 func pickerView(pickerView: UIPickerView, didSelect numbers: [Int]) { 36 println(numbers) 37 } 38}
lang
1class PopUpPickerView: UIView { 2 var pickerView: UIPickerView! 3 var pickerToolbar: UIToolbar! 4 var toolbarItems: [UIBarItem]! 5 6 var delegate: PopUpPickerViewDelegate? { 7 didSet { 8 pickerView.delegate = delegate 9 } 10 } 11 private var selectedRows: [Int]? 12 13 // MARK: Initializer 14 override init() { 15 super.init() 16 initFunc() 17 } 18 override init(frame: CGRect) { 19 super.init(frame: frame) 20 initFunc() 21 } 22 required init(coder aDecoder: NSCoder) { 23 super.init(coder: aDecoder) 24 initFunc() 25 } 26 private func initFunc() { 27 let screenSize = UIScreen.mainScreen().bounds.size 28 self.backgroundColor = UIColor.blackColor() 29 30 pickerToolbar = UIToolbar() 31 pickerView = UIPickerView() 32 toolbarItems = [] 33 34 pickerToolbar.translucent = true 35 pickerView.showsSelectionIndicator = true 36 pickerView.backgroundColor = UIColor.whiteColor() 37 38 self.bounds = CGRectMake(0, 0, screenSize.width, 260) 39 self.frame = CGRectMake(0, screenSize.height, screenSize.width, 260) 40 pickerToolbar.bounds = CGRectMake(0, 0, screenSize.width, 44) 41 pickerToolbar.frame = CGRectMake(0, 0, screenSize.width, 44) 42 pickerView.bounds = CGRectMake(0, 0, screenSize.width, 216) 43 pickerView.frame = CGRectMake(0, 44, screenSize.width, 216) 44 45 let space = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FixedSpace, target: nil, action: nil) 46 space.width = 12 47 let cancelItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Cancel, target: self, action: "cancelPicker") 48 let flexSpaceItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: self, action: nil) 49 let doneButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Done, target: self, action: Selector("endPicker")) 50 toolbarItems! += [space, cancelItem, flexSpaceItem, doneButtonItem, space] 51 52 pickerToolbar.setItems(toolbarItems, animated: false) 53 self.addSubview(pickerToolbar) 54 self.addSubview(pickerView) 55 } 56 func showPicker() { 57 if selectedRows == nil { 58 selectedRows = getSelectedRows() 59 } 60 let screenSize = UIScreen.mainScreen().bounds.size 61 UIView.animateWithDuration(0.2) { 62 self.frame = CGRectMake(0, screenSize.height - 260.0, screenSize.width, 260.0) 63 } 64 } 65 func cancelPicker() { 66 hidePicker() 67 restoreSelectedRows() 68 selectedRows = nil 69 } 70 func endPicker() { 71 hidePicker() 72 delegate?.pickerView?(pickerView, didSelect: getSelectedRows()) 73 selectedRows = nil 74 } 75 private func hidePicker() { 76 let screenSize = UIScreen.mainScreen().bounds.size 77 UIView.animateWithDuration(0.2) { 78 self.frame = CGRectMake(0, screenSize.height, screenSize.width, 260.0) 79 } 80 } 81 private func getSelectedRows() -> [Int] { 82 var selectedRows = [Int]() 83 for i in 0..<pickerView.numberOfComponents { 84 selectedRows.append(pickerView.selectedRowInComponent(i)) 85 } 86 return selectedRows 87 } 88 private func restoreSelectedRows() { 89 for i in 0..<selectedRows!.count { 90 pickerView.selectRow(selectedRows![i], inComponent: i, animated: true) 91 } 92 } 93} 94 95@objc 96protocol PopUpPickerViewDelegate: UIPickerViewDelegate { 97 optional func pickerView(pickerView: UIPickerView, didSelect numbers: [Int]) 98}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。