大阪市中央区 システムソフトウェア開発会社

営業時間:平日09:15〜18:15
MENU

Swiftワン・ピース・コード:UIDatePickerを使用する

株式会社クローバーフィールドの経営理念
著者:川上洋
公開日:2019/01/28
最終更新日:2019/01/28
カテゴリー:技術情報
タグ:

こんにちは。川上です。

BalloonViewに日付ピッカーを組み込んで、日時データの更新処理をしました。
で、その動作感じは、⬇️です。

先ずは、UIDatePickerのInit処理からでした。

    
var myDatePicker: UIDatePicker!  	// 日付ピッカー
var ovrPickerNowBtn:UIButton!       //Nowボタン
var ovrPickerDownBtn:UIButton!      //Downボタン

     //MARK: === ピッカー(Picker)の作成
    func initDatePicker() {
       // DatePickerを生成する.
        myDatePicker = UIDatePicker()
        
        let picker_x: CGFloat = ovrBallowView.triangleHeight
        let picker_y: CGFloat = ovrBallowView.triangleHeight
        let picker_w: CGFloat = ovrBallowView.frame.width - picker_x*2
        let picker_h: CGFloat = ovrBallowView.frame.height - picker_y * 2

        // datePickerを設定(デフォルトでは位置は画面上部)する.
        myDatePicker.frame = CGRect(x:picker_x,
                                    y:picker_y,
                                    width:picker_w,
                                    height:picker_h)
        myDatePicker.backgroundColor = UIColor.white
        myDatePicker.layer.cornerRadius = 5.0
        myDatePicker.layer.shadowOpacity = 0.5
        myDatePicker.locale = NSLocale(localeIdentifier: "ja_JP") as Locale
        myDatePicker.timeZone = NSTimeZone.local
        myDatePicker.tag = TAG_BALLOW_DATE_PICKER
        // 値が変わった際のイベントを登録する.
        myDatePicker.addTarget(self,
                               action: #selector(MainRegNtyVwController.onDidChangeDate(sender:)),
                               for: .valueChanged)
        
        ovrBallowView.addSubview(myDatePicker)

        // 起動日付の表示フォーマット
        dateLable.text = dateLableToStr(Date())

        // MARK:  --- "Today"ボタン  ovrPickerNowBtnを作成 ===========
        let svbtnX :CGFloat = 0
        let lrbtnY :CGFloat = 0 //ovbtnWH + ovbtnWH / 3
        ovrPickerNowBtn = UIButton(frame: CGRect(x:svbtnX,
                                                 y:lrbtnY,
                                                 width:60 ,
                                                 height:40 ))
        ovrPickerNowBtn.addTarget(self,
                                  action: #selector(MainRegNtyVwController.clickedBtn(_:)),
                                  for: .touchUpInside)
        
        ovrPickerNowBtn.setTitle("Today", for: .normal)
        ovrPickerNowBtn.setTitleColor(UIColor.black, for: UIControlState.normal)
        ovrPickerNowBtn.setTitleColor(UIColor.red, for: UIControlState.highlighted)
        ovrPickerNowBtn.backgroundColor = UIColor.yellow
        ovrPickerNowBtn.layer.cornerRadius = 5  //角丸
        ovrPickerNowBtn.layer.borderWidth = 2.0 // 枠線の幅
        ovrPickerNowBtn.layer.borderColor = UIColor.black.cgColor // 枠線の色
        
        ovrPickerNowBtn.center = CGPoint(x: ovrBallowView.frame.width  - 100 ,
                                         y: ovrBallowView.frame.height - 20 )
        
        ovrInfoToolBtn.tag = TAG_BALLOW_PICER_NOWBTN
        ovrBallowView.addSubview(ovrPickerNowBtn)

        // MARK: ---- ”Down”ボタンovrPickerDownBtnを作成 ===========
        ovrPickerDownBtn = UIButton(frame: CGRect(x:svbtnX,
                                                 y:lrbtnY,
                                                 width:60 ,
                                                 height:40 ))
        ovrPickerDownBtn.addTarget(self,
                                  action: #selector(MainRegNtyVwController.clickedBtn(_:)),
                                  for: .touchUpInside)
        
        ovrPickerDownBtn.setTitle("✅", for: .normal)
        //ボタンタイトルのフォントサイズ
        ovrPickerDownBtn.titleLabel?.font = UIFont.systemFont(ofSize: 40)//25

        
        ovrPickerDownBtn.center = CGPoint(x: ovrBallowView.frame.width  - 30 ,
                                         y: ovrBallowView.frame.height - 20 )
        
        ovrPickerDownBtn.tag = TAG_BALLOW_PICER_DOWNBTN
        ovrBallowView.addSubview(ovrPickerDownBtn)

        
        //MARK:ovrBallowView内Btnの表示ONOff
        myDatePicker.isHidden = true
        ovrPickerNowBtn.isHidden = true
    }

UIDatePickerの値が変わった時に受けたイベント処理です。

// MARK: === DatePickerが選ばれた際に呼ばれる.
    @objc internal func onDidChangeDate(sender: UIDatePicker){
        // 起動日付の表示フォーマット
        dateLable.text = dateLableToStr(sender.date)
      
        //  ovrSaveToolBtn ーー 表示On/Off
        ovrSaveToolBtnisHiddenOnOff(hidden: false)
        
        // MARK: == リマインダデータの保存データ
        rmdSaveDate = sender.date
    }

概ね、キモそうなところは記載できたと思います。
後は、それなりに、行間で・・・ね。

ではでは。

    上に戻る