Cách chúng tôi có thể đặt giá trị UIDatePicker để chỉ hiển thị ngày chủ nhật trong iOS nhanh?UIDatePicker chỉ hiển thị ngày chủ nhật?
5
A
Trả lời
5
cuối cùng, bản thân tôi đã tìm ra giải pháp. Trong phương thức didSelectRow, kiểm tra xem ngày đã chọn có phải là chủ nhật không ??? nếu có thì ok nhưng nếu không thì hãy tải lại thành phần để chọn ngày chủ nhật gần nhất.
func pickerView (pickerView: UIPickerView, didSelectRow hàng: Int, inComponent thành phần: 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, inComponent: 1, animated: true)
}
var confirmSunday = self.isGivenDaySunday(dayValue + 1, selectedMonth: monthValue, selectedYear: yearValue)
// Added by mohsin : Reason bug : selecting previous day
if confirmSunday.sundayDate?.isLessThanDate(NSDate()) == true {
confirmSunday = self.isGivenDaySunday(dayValue, selectedMonth: monthValue, 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, inComponent: 1, animated: true)
}
self.startDateTextField.text = confirmSunday.sundayDate?.fullStyleDateString
self.newBootcamp?.startDate = confirmSunday.sundayDate!
debugPrint(confirmSunday.sundayDate?.fullStyleDateString)
}
}
Phương pháp mà kiểm tra chủ nhật đang theo dõi một
func isGivenDaySunday (selectedDay: Int, selectedMonth: Int , selectedYear: Int) -> (isSunday: Bool, nextSundayAsWeekDay: Int, sundayDate: NSDate) { hãy unitFlags: NSCalendarUnit = [.Day, .tháng, .năm, .Weekday]
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, 0, selectedDate)
} else {
return (false, 8 - newSelectedDateComponent.weekday, nil)
}
}
Các vấn đề liên quan
- 1. d3 chỉ hiển thị ngày chủ nhật:
- 2. UIDatePicker để chỉ hiển thị năm
- 3. Cách hiển thị uidatepicker từ uitableviewcell
- 4. Làm cách nào để tạo một ngày hiển thị UIDatePicker cụ thể?
- 5. iphone UIDatePicker hiển thị ngày sai trong múi giờ trung tâm
- 6. UIDatePicker không hiển thị bánh xe cho ngày trong tháng (dd) trên iPad cho iOS 8.1
- 7. Nhận chỉ ngày (không có thời gian) từ UIDatePicker
- 8. IOS: UIDatePicker hiển thị kém với nền đen
- 9. Cách tạo Chế độ xem DatePicker chỉ hiển thị ngày và không theo thời gian
- 10. Cách chỉ định múi giờ trong UIDatePicker
- 11. tính ngày chủ nhật giữa hai ngày
- 12. Làm cách nào để hiển thị UIDatePicker thay vì bàn phím khi người dùng chọn UITextField?
- 13. Địa chỉ IP máy chủ hiển thị PHP
- 14. Hiển thị đúng ngày Instagram
- 15. Tại sao bộ lọc ngày góc hiển thị ngày sai?
- 16. D3 Force Chỉ thị đồ thị ajax cập nhật
- 17. UIDatePicker trong PopoverView trong iPad
- 18. iOS 5 - Đặt ngày tối thiểu UIDatePicker thành "hôm nay"
- 19. hiển thị Ngày khác nhau trong jsp
- 20. moment.js - hiển thị ngày HOẶC thời gian
- 21. yii2: định dạng ngày để hiển thị
- 22. Chỉ thị góc không hiển thị
- 23. Máy chủ SQL - Hiển thị các ngày trong tháng hiện tại
- 24. Hiển thị HTML Ngày hiện tại
- 25. Định dạng hiển thị ngày tháng Datatables.net
- 26. ngày Định dạng hiển thị trên DatePicker
- 27. Truy lục ngày và giờ từ UIDatePicker iOS
- 28. AngularJS/AngularUI: Datepicker chỉ hiển thị năm?
- 29. Trang web hiển thị khác với địa chỉ máy chủ cục bộ và địa chỉ IP
- 30. Logcat chỉ hiển thị thẻ cấp
Bạn không thể. Bạn phải sử dụng một 'UIPicker' và đặt cho mình các thành phần. – Larme