Goord早上都在一起,斯威夫特日期選擇器與最小日期
我有IOS 8,快捷的應用程序。 這裏有一個UIViewcontroller
UIDatepicker
我設置了一個最短日期。例如今天的日期:2 |五月| 2015 使用此解決方案時,應該無法設置過去的日期
但是如果想設置此日期15 |一月| 2016 我定在第一天至15 比上月到一月,但隨後UIDatepicker
追溯到最小日期2015年
5月2日這是可能的,這德恩更改日至15月到一月,那年自動轉換到2016年?
Goord早上都在一起,斯威夫特日期選擇器與最小日期
我有IOS 8,快捷的應用程序。 這裏有一個UIViewcontroller
UIDatepicker
我設置了一個最短日期。例如今天的日期:2 |五月| 2015 使用此解決方案時,應該無法設置過去的日期
但是如果想設置此日期15 |一月| 2016 我定在第一天至15 比上月到一月,但隨後UIDatepicker
追溯到最小日期2015年
5月2日這是可能的,這德恩更改日至15月到一月,那年自動轉換到2016年?
讓你minimumDate取消設置並嘗試通過代碼來配置它...
試試這個:
@IBAction func changeValue(sender: UIDatePicker)
{
//Get time Now, and convert to a NSCalendar
//Specify the minimun date if you want.
let now = NSDate()
let nowCalendar = NSCalendar.currentCalendar()
let nowComponents = nowCalendar.components([.Day, .Month, .Year], fromDate: now)
//Compare if date is lesser than now and then create a new date
if nowCalendar.compareDate(sender.date, toDate: now, toUnitGranularity: [.Day, .Month, .Year]) == NSComparisonResult.OrderedAscending
{
let dateCalendar = NSCalendar.currentCalendar()
let dateComponents = dateCalendar.components([.Day, .Month, .Year], fromDate: sender.date)
dateComponents.year = nowComponents.year + 1
let newDate = dateCalendar.dateFromComponents(dateComponents)
sender.date = newDate!
}
}
您可以在http://nshipster.com/nscalendar-additions/和http://rypress.com/tutorials/objective-c/data-types/dates上獲取更多信息 –
現在可以在Xcode 9和Swift上工作嗎? 3,@dede.exe? – Shyam
@Shyam您需要做一些更改才能在swift3中完成此工作 –
///Swift4 Version - I think it may works with 3 too.
@IBAction func changeValue(sender: UIDatePicker)
{
//Get time Now, and convert to a NSCalendar
//Specify the minimun date if you want.
let now = Date()
let nowCalendar = Calendar.current
let nowComponents = nowCalendar.dateComponents([.day, .month, .year], from: now)
//Compare if date is lesser than now and then create a new date
if nowCalendar.compare(sender.date, to: now, toGranularity: Calendar.Component.day) == ComparisonResult.orderedAscending
{
var dateCalendar = Calendar.current
var dateComponents = dateCalendar.dateComponents([.day, .month, .year], from: sender.date)
guard let year = nowComponents.year else { return }
dateComponents.year = year + 1
let newDate = dateCalendar.date(from:dateComponents)
sender.date = newDate!
}
}
我出版了一本完整的例子在操場上工作,如果你想打個小。 https://gist.github.com/dedeexe/4878f78d7e1d5fe8b372ef84de629b59
我希望這個例子能幫助你@Shyam –
set picker.minimumdate = [nsdate date]; –
這不是我的問題的解決方案...設置最小日期。問題是,如果我想設定一個未來的日期,那麼我必須在年初選擇,而且我可以改變日期和月份。 – Ghost108
我不相信你用標準的'UIDatePicker'控件可以找到你想要的。你將不得不從頭開始實施。 –