2016-08-17 12 views
0

UIDatePicker有日期模式和日期和時間模式。事情是我想要介於兩者之間的東西。基本上我需要日期模式,但也顯示星期幾。換句話說,日期和時間模式,但沒有時間選項。是否有可能或將不得不使用正常的UIPickerView並從頭開始編程選項?UIDatePicker - 工作日但沒有時間

我看到一個類似的問題,有人只是想顯示週日而不是日期,但我想要日期,而不是時間。

回答

0

您將需要創建自己的。您可以按照他們在下面的帖子中列出的步驟進行操作,但您還需要事先提供日期。使用NSDateFormatter可以輕鬆完成。

UIdatepicker showing weekdays

0

這裏是一個,我提出的一個例子。您可以添加它並使其具有您想要的功能。

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 
相關問題