swift – UIDatePicker仅显示星期日的日期?
发布时间:2020-12-14 17:55:30 所属栏目:百科 来源:网络整理
导读:我们如何设置UIDatePicker值以在 swift iOS中仅显示星期日的日期? 解决方法 最后,我自己找到了解决方案.在didSelectRow方法中检查所选日期是否是星期日???如果是,则确定,但如果没有,则重新加载组件以选择最近星期日的日期. func pickerView(pickerView:UIP
我们如何设置UIDatePicker值以在
swift iOS中仅显示星期日的日期?
解决方法
最后,我自己找到了解决方案.在didSelectRow方法中检查所选日期是否是星期日???如果是,则确定,但如果没有,则重新加载组件以选择最近星期日的日期.
func pickerView(pickerView:UIPickerView,didSelectRow行:Int,inComponent组件:Int){ if component == 0 { pickerView.reloadComponent(1) } let titleLabel = pickerView.viewForRow(row,forComponent: component) as? UILabel titleLabel?.font = UIFont(name: BCGConstants.Fonts.Name.ProximaNovaBold,size: 27)! var dayValue = pickerView.selectedRowInComponent(1) + 1 let monthValue = pickerView.selectedRowInComponent(0) + 1 var yearValue = 0 let unitFlags: NSCalendarUnit = [.Day,.Month,.Year,.Weekday] let currentDateComponents = NSCalendar.currentCalendar().components(unitFlags,fromDate: NSDate()) if monthValue > currentDateComponents.month || (dayValue >= currentDateComponents.day && monthValue == currentDateComponents.month ) { yearValue = currentDateComponents.year } else { yearValue = currentDateComponents.year + 1 } debugPrint("(self.isGivenDaySunday(dayValue,selectedMonth: monthValue,selectedYear: yearValue)) day = (dayValue) month = (monthValue) )") let sundayCheck = self.isGivenDaySunday(pickerView.selectedRowInComponent(1) + 1,selectedMonth: pickerView.selectedRowInComponent(0) + 1,selectedYear: yearValue) if sundayCheck.isSunday { self.startDateTextField.text = sundayCheck.sundayDate?.fullStyleDateString self.newBootcamp?.startDate = sundayCheck.sundayDate! } else { // titleLabel?.font = UIFont(name: BCGConstants.Fonts.Name.ProximaNovaBold,size: 27)! // titleLabel?.textColor = UIColor.lightGrayColor() if dayValue > 15 { dayValue = pickerView.selectedRowInComponent(1) - (7 - sundayCheck.nextSundayAsWeekDay) pickerView.selectRow(dayValue,inComponent: 1,animated: true) } else { dayValue = pickerView.selectedRowInComponent(1) + sundayCheck.nextSundayAsWeekDay pickerView.selectRow(dayValue,animated: true) } var confirmSunday = self.isGivenDaySunday(dayValue + 1,selectedYear: yearValue) // Added by mohsin : Reason bug : selecting previous day if confirmSunday.sundayDate?.isLessThanDate(NSDate()) == true { confirmSunday = self.isGivenDaySunday(dayValue,selectedYear: yearValue + 1) //TODO: Need to be verify again : If not working fine then you must try to change next commented statement and uncomment it // dayValue = pickerView.selectedRowInComponent(1) + sundayCheck.nextSundayAsWeekDay pickerView.selectRow(dayValue - 1,animated: true) } self.startDateTextField.text = confirmSunday.sundayDate?.fullStyleDateString self.newBootcamp?.startDate = confirmSunday.sundayDate! debugPrint(confirmSunday.sundayDate?.fullStyleDateString) } } 检查星期日的方法是跟随一个 func isGivenDaySunday(selectedDay:Int,selectedMonth:Int,selectedYear:Int) – > (isSunday:Bool,nextSundayAsWeekDay:Int,sundayDate:NSDate?){ let selectedDateComponents = NSDateComponents() selectedDateComponents.month = selectedMonth selectedDateComponents.day = selectedDay selectedDateComponents.year = selectedYear let selectedDate = NSCalendar(identifier: NSCalendarIdentifierGregorian)?.dateFromComponents(selectedDateComponents) let newSelectedDateComponent = NSCalendar.currentCalendar().components(unitFlags,fromDate: selectedDate!) if newSelectedDateComponent.weekday == 1 { // 1 means SUNDAY as per Gregorian return (true,selectedDate) } else { return (false,8 - newSelectedDateComponent.weekday,nil) } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |