2016-08-17 15 views
0

UIDatePickerには日付モードと日時モードがあります。ことは、私は間に何かをしたいということです。基本的に私は日付モードが必要ですが、曜日も表示します。つまり、日時モードですが時間オプションはありません。それは可能ですか、または普通のUIPickerViewを使用してゼロからオプションをプログラムする必要がありますか?UIDatePicker - 平日ですが時間がありません。

私は似たような質問をしましたが、平日の代わりに平日を見せたいと思っていましたが、私はその日を望んでいます。

答えて

0

あなた自身で作成する必要があります。あなたは、以下の記事で概要を説明している手順に従うことができますが、あらかじめ日付を入力する必要があります。これはNSDateFormatterで簡単に実現できます。ここで

UIdatepicker showing weekdays

0

私が作っ1の例です。それを追加して、それがあなたが望む機能を持たせることができます。

enter image description here

//example of use 

//inside the class 
var datePicker: DatePicker! 

//inside viewDidLoad   
datePicker = DatePicker(date: dateToInitializeDatePickerTo) 

extension ViewController: UIPickerViewDelegate { 
    func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int { 
     return 2 
    } 

    func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 
     switch(component) { 
     case 0: 
      return 12 
     case 1: 
      return datePicker.numberOfYears 
     default: 
      return 0 
     } 
    } 

     func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 
     switch(component) { 
     case 0: 
      return datePicker.longerMonths[row] 
     case 1: 
      return "\(datePicker.years[row])" 
     default: 
      return "" 
     } 
    } 

    func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
     switch(component) { 
     case 0: 
      datePicker.selectedMonth = row 
     case 1: 
      datePicker.yearsAgo = row 
     default: 
      break 
     } 
     yourVariableForTheDate = datePicker.selectedAge 
    } 
} 

    //DatePickerClass.swift 
    import Foundation 

    class DatePicker { 



    let YEARS_FROM_NOW_TILL_THIS_YEAR = 2000 

    var type: Int! 
    var selectedAge: NSDate { 
     let formatter = NSDateFormatter() 
     formatter.dateFormat = "yyyy-MM-dd HH:mm" 
     let stringDate = "\(year)-\(stringMonth)-01 01:01" 
     let date = formatter.dateFromString(stringDate)! 
     return date 
    } 
    let now = NSDate() 

    var years: [Int]! 
    var yearsAgo: Int! 

    var theMonth: Int! 
    var selectedMonth: Int { 
     get { 
      return theMonth 
     } 
     set { 
      if newValue == -1 { 
       theMonth = 11 
      } else { 
       theMonth = newValue 
      } 
     } 
    } 

    private var selectedYear: Int { 
     return years[yearsAgo] 
    } 

    let calendar = NSCalendar.currentCalendar() 

    let longerMonths = ["January", "Febuary", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"] 
    let shorterMonths = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] 

    var numberOfYears: Int { 
     return years.count 
    } 

    var monthYear: String { 
     return "\(shorterMonth) \(year)" 
    } 

    var year: Int { 
     return years[yearsAgo] 
    } 

    var longerMonth: String { 
     return longerMonths[selectedMonth] 
    } 

    var shorterMonth: String { 
     return shorterMonths[selectedMonth] 
    } 

    var stringMonth: String { 
     var month: String = "" 
     if selectedMonth < 9 { 
      month.appendContentsOf("0") 
     } 
     month.appendContentsOf("\(selectedMonth + 1)") 
     return month 
    } 

    init(date: NSDate?) { 
     years = generatePickerData() 
     if date != nil { 
      setAge(date!) 
     } else { 
      setAge(now) 
     } 
    } 

    func setAge(date: NSDate) { 
     selectedMonth = calendar.component(.Month, fromDate: date) - 1 
     yearsAgo = (calendar.component(.Year, fromDate: now) - calendar.component(.Year, fromDate: date)) 
    } 

    private func generatePickerData() -> [Int] { 
     var yearInts : [Int] = [] 
     var year = calendar.component(.Year, fromDate: now) 
     while year >= YEARS_FROM_NOW_TILL_THIS_YEAR { 
      yearInts.append(year) 
      year -= 1 
     } 
     return yearInts 
    } 
} 


    [1]: http://i.stack.imgur.com/XJ7Gg.png 
関連する問題