iOSプログラミング with Swift 2


2016.05.29: created by

Swiftで Custom View (水平方向にスクロールする Picker) を使う

  1. Custom View を用意します。今回は https://github.com/Akkyie/AKPickerView-Swift で公開されている AKPickerView.swift を使ってみます。
  2. Xcode を起動して "Create a new Xcode project" で "Single View Application" として新しいプロジェクトを開きます。 ここではプロジェクト名を SwiftHorizontalPicker としています。



  3. プロジェクトに Custom View のクラスファイルを追加します。
  4. ウィンドウ左の "Show the project navigator" でプロジェクト名のフォルダを右クリックして"Add Files to プロジェクト名"を選択する。


    ダウンロードした "AKPickerView.swift" を選択して "Add" ボタンをクリックすると、ファイルがプロジェクトに追加されます。 このときOptionsをクリックして、"Destination: [ ] Copy items if needed" にチェックをつけておくこと(重要)。










  5. Main.storyboardが表示されている状態で、ウィンドウ右下の "Object Library" から "View" を配置します。 さらにウィンドウ右の Identity Inspector で、配置した "View" の"Custom Class" を "AKPickerView" に変更 します。



  6. Main.storyboardが表示されている状態で、 ウィンドウの右上の "Show the Assistant Editor" ボタン をクリックし ViewController.swift が表示されている状態にします。



  7. Main.Storyboard上に配置した"View"を一旦クリックして選択してから、マウスの右ボタン(または、Controlキー+左ボタン)で、ViewController.swift の
    class ViewController: UIViewController {
    
    の下の行までドラッグします。


    Connection は Outlet で、Name は "picker" とします。




    ViewController.swift にに次の行が追加されます。

       @IBOutlet weak var picker: AKPickerView!
    



  8. 2画面目のUIViewControllerを制御するViewController2.swift を変更します。
  9. ViewController.swift を変更します。
  10. ViewController.swiftに追加するコード(赤字部分)
    import UIKit
    
    class ViewController: UIViewController, AKPickerViewDelegate, AKPickerViewDataSource {
        @IBOutlet weak var picker: AKPickerView!
    
        let values:[String] = ["apple","orange","peach","melon","grape","lemon"]
        
        func numberOfItemsInPickerView(pickerView: AKPickerView) -> Int {
            return values.count
        }
        
        func pickerView(pickerView: AKPickerView, titleForItem item: Int) -> String {
            return " " + values[item] + " "
        }
        
        func pickerView(pickerView: AKPickerView, didSelectItem row: Int) {
            print("select " + values[row])
        }
        
        override func viewDidLoad() {
            super.viewDidLoad()
            
            picker.delegate = self
            picker.dataSource = self
            picker.font = UIFont(name: "HelveticaNeue-Light", size: 20)!
            picker.highlightedFont = UIFont(name: "HelveticaNeue", size: 20)!
            picker.pickerViewStyle = .Wheel
            picker.maskDisabled = false
            picker.reloadData()
        }
    
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
        }
    
    }
    



  11. 実行すると、横スクロールで選択できます。


  12. サンプルのプロジェクトはこちら。(Xcode 7.3.1版)


http://karel.tsuda.ac.jp