Iphone UIDatePicker仅显示年份
有没有办法让UIDatePicker仅显示年份?您不能使用Iphone UIDatePicker仅显示年份,iphone,objective-c,ios,Iphone,Objective C,Ios,有没有办法让UIDatePicker仅显示年份?您不能使用UIDatePicker执行此操作,但可以使用UIPicker 您需要为年份创建一个数组,并使用UIPicker委托将它们添加到UIPicker 这是一个教程 不能使用UIDatePicker执行此操作,但可以使用UIPicker执行此操作 您需要为年份创建一个数组,并使用UIPicker委托将它们添加到UIPicker 这是一个教程 我有一个小代码要删除,但是如果代码段在某个地方在线,它会更好。这并不令人惊讶,但它是可搜索的 Objec
UIDatePicker
执行此操作,但可以使用UIPicker
您需要为年份创建一个数组,并使用UIPicker
委托将它们添加到UIPicker
这是一个教程 不能使用
UIDatePicker
执行此操作,但可以使用UIPicker
执行此操作
您需要为年份创建一个数组,并使用UIPicker
委托将它们添加到UIPicker
这是一个教程 我有一个小代码要删除,但是如果代码段在某个地方在线,它会更好。这并不令人惊讶,但它是可搜索的 Objective-C代码创建自1960年以来所有年份的数组。非常适合输入
ui选择器
//Get Current Year into i2
NSDateFormatter* formatter = [[[NSDateFormatter alloc] init]autorelease];
[formatter setDateFormat:@"yyyy"];
int i2 = [[formatter stringFromDate:[NSDate date]] intValue];
//Create Years Array from 1960 to This year
years = [[NSMutableArray alloc] init];
for (int i=1960; i<=i2; i++) {
[years addObject:[NSString stringWithFormat:@"%d",i]];
}
不要忘记接口中的声明
//Data
NSMutableArray *years;
最糟糕的是
引用自我有一段代码要删除,但是如果代码段在某个地方在线,它会更好。这并不令人惊讶,但它是可搜索的 Objective-C代码创建自1960年以来所有年份的数组。非常适合输入
ui选择器
//Get Current Year into i2
NSDateFormatter* formatter = [[[NSDateFormatter alloc] init]autorelease];
[formatter setDateFormat:@"yyyy"];
int i2 = [[formatter stringFromDate:[NSDate date]] intValue];
//Create Years Array from 1960 to This year
years = [[NSMutableArray alloc] init];
for (int i=1960; i<=i2; i++) {
[years addObject:[NSString stringWithFormat:@"%d",i]];
}
不要忘记接口中的声明
//Data
NSMutableArray *years;
最糟糕的是
引用自我无法发表评论,但我一直在玩弄沃沃林的答案,我决定采取一种方式,让最近一年成为最重要的一年。目前,他的代码最早可以追溯到最近几年 我所做的所有更改都是在viewDidLoad中的NSMutableArray设置中,而不是他的:
//Create Years Array from 1960 to This year
years = [[NSMutableArray alloc] init];
for (int i=1960; i<=i2; i++) {
[years addObject:[NSString stringWithFormat:@"%d",i]];
}
//创建从1960年到今年的年份数组
年份=[[NSMutableArray alloc]init];
对于(int i=1960;i我无法发表评论,但我一直在玩弄Wolvorin的答案,我决定采取一种方法,让最近一年的代码排在最前面。目前,他的代码最早出现在最近几年
我所做的所有更改都是在viewDidLoad中的NSMutableArray设置中,而不是他的:
//Create Years Array from 1960 to This year
years = [[NSMutableArray alloc] init];
for (int i=1960; i<=i2; i++) {
[years addObject:[NSString stringWithFormat:@"%d",i]];
}
//创建从1960年到今年的年份数组
年份=[[NSMutableArray alloc]init];
对于(int i=1960;i仅使用Swift 3更新本文中的现有答案:
var yearsTillNow : [String] {
var years = [String]()
for i in (1970..<2018).reversed() {
years.append("\(i)")
}
return years
}
var yearsTillNow:[字符串]{
变量年份=[String]()
对于我(1970年…只是用Swift 3更新了这篇文章中的现有答案:
var yearsTillNow : [String] {
var years = [String]()
for i in (1970..<2018).reversed() {
years.append("\(i)")
}
return years
}
var yearsTillNow:[字符串]{
变量年份=[String]()
对于我在(1970年…我稍微修改了Sharukh Mastan的代码,以始终在顶部显示当前年份
var formattedDate: String? = ""
let format = DateFormatter()
format.dateFormat = "yyyy"
formattedDate = format.string(from: date)
var yearsTillNow: [String] {
var years = [String]()
for i in (Int(formattedDate!)!-70..<Int(formattedDate!)!+1).reversed() {
years.append("\(i)")
}
return years
}
print(yearsTillNow)
var formattedDate:字符串?=“
let format=DateFormatter()
format.dateFormat=“yyyy”
formattedDate=format.string(起始日期:日期)
var yearsTillNow:[字符串]{
变量年份=[String]()
对于i in(Int(formattedDate!)!-70..我稍微修改了Sharukh Mastan的代码,以始终在顶部显示当前年份
var formattedDate: String? = ""
let format = DateFormatter()
format.dateFormat = "yyyy"
formattedDate = format.string(from: date)
var yearsTillNow: [String] {
var years = [String]()
for i in (Int(formattedDate!)!-70..<Int(formattedDate!)!+1).reversed() {
years.append("\(i)")
}
return years
}
print(yearsTillNow)
var formattedDate:字符串?=“
let format=DateFormatter()
format.dateFormat=“yyyy”
formattedDate=format.string(起始日期:日期)
var yearsTillNow:[字符串]{
变量年份=[String]()
对于i in(Int(formattedDate!)!-70..不能只设置年和月。从iOS 13.5.1开始,只有这些模式可用
- 时间:以小时、分钟和(可选)上午/下午指定为单位显示日期的模式。显示的确切项目及其名称
顺序取决于区域设置。此模式的示例为[6 | 53
|下午]
- 日期:以月、月天数和年为单位显示日期的模式。这些项目的确切顺序取决于区域设置
设置。此模式的一个示例是[2007年11月15日]
- dateAndTime:一种模式,将日期显示为统一的星期几、月份和月日值,加上小时、分钟和分钟
(可选)AM/PM名称。这些名称的确切顺序和格式
项目取决于区域设置。此模式的示例为[Wed-Nov]
15 | 6 | 53 |下午]
- 倒计时:一种显示小时和分钟值的模式,例如[1 | 53]。应用程序必须将计时器设置为在最短时间内启动
正确的时间间隔,并设置日期选择器作为秒的刻度
您可以使用自定义UIPickerView构建它
class DatePickerViewController: UIViewController {
var dates = [Date]()
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = .white
var date = Date().addYear(n: -10)
let endDate = Date().addYear(n: 10)
repeat {
date = date.addMonth(n: 1)
dates.append(date)
} while date < endDate
let picker = UIPickerView()
picker.dataSource = self
picker.delegate = self
picker.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(picker)
picker.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor).isActive = true
picker.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor).isActive = true
picker.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor).isActive = true
picker.heightAnchor.constraint(equalToConstant: 500).isActive = true
}
}
extension DatePickerViewController: UIPickerViewDataSource {
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return self.dates.count
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
let date = self.dates[row]
return date.stringDate()
}
func view(forRow row: Int, forComponent component: Int) -> UIView? {
let label = UILabel()
return label
}
}
extension DatePickerViewController: UIPickerViewDelegate {
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
let date = self.dates[row]
// Date that the user select.
print( date, date.stringDate())
}
}
extension Date {
public func addYear(n: Int) -> Date {
let calendar = Calendar.current
return calendar.date(byAdding: .year, value: n, to: self)!
}
public func addMonth(n: Int) -> Date {
let calendar = Calendar.current
return calendar.date(byAdding: .month, value: n, to: self)!
}
public func stringDate() -> String {
let calendar = Calendar.current
let dateFormatter = DateFormatter()
dateFormatter.timeZone = calendar.timeZone
dateFormatter.locale = calendar.locale
// Use YYYY to show year only.
// Use MMMM to show month only.
dateFormatter.setLocalizedDateFormatFromTemplate("MMMM YYYY")
let dateString = dateFormatter.string(from: self)
return dateString
}
}
无法仅设置年和月。从iOS 13.5.1开始,只有这些模式可用
- 时间:以小时、分钟和(可选)上午/下午指定为单位显示日期的模式。显示的确切项目及其名称
顺序取决于区域设置。此模式的示例为[6 | 53
|下午]
- 日期:以月、月天数和年为单位显示日期的模式。这些项目的确切顺序取决于区域设置
设置。此模式的一个示例是[2007年11月15日]
- dateAndTime:一种模式,将日期显示为统一的星期几、月份和月日值,加上小时、分钟和分钟
(可选)AM/PM名称。这些名称的确切顺序和格式
项目取决于区域设置。此模式的示例为[Wed-Nov]
15 | 6 | 53 |下午]
- 倒计时:一种显示小时和分钟值的模式,例如[1 | 53]。应用程序必须将计时器设置为在最短时间内启动
正确的时间间隔,并设置日期选择器作为秒的刻度
您可以使用自定义UIPickerView构建它
class DatePickerViewController: UIViewController {
var dates = [Date]()
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = .white
var date = Date().addYear(n: -10)
let endDate = Date().addYear(n: 10)
repeat {
date = date.addMonth(n: 1)
dates.append(date)
} while date < endDate
let picker = UIPickerView()
picker.dataSource = self
picker.delegate = self
picker.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(picker)
picker.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor).isActive = true
picker.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor).isActive = true
picker.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor).isActive = true
picker.heightAnchor.constraint(equalToConstant: 500).isActive = true
}
}
extension DatePickerViewController: UIPickerViewDataSource {
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return self.dates.count
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
let date = self.dates[row]
return date.stringDate()
}
func view(forRow row: Int, forComponent component: Int) -> UIView? {
let label = UILabel()
return label
}
}
extension DatePickerViewController: UIPickerViewDelegate {
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
let date = self.dates[row]
// Date that the user select.
print( date, date.stringDate())
}
}
extension Date {
public func addYear(n: Int) -> Date {
let calendar = Calendar.current
return calendar.date(byAdding: .year, value: n, to: self)!
}
public func addMonth(n: Int) -> Date {
let calendar = Calendar.current
return calendar.date(byAdding: .month, value: n, to: self)!
}
public func stringDate() -> String {
let calendar = Calendar.current
let dateFormatter = DateFormatter()
dateFormatter.timeZone = calendar.timeZone
dateFormatter.locale = calendar.locale
// Use YYYY to show year only.
// Use MMMM to show month only.
dateFormatter.setLocalizedDateFormatFromTemplate("MMMM YYYY")
let dateString = dateFormatter.string(from: self)
return dateString
}
}
如果你能粘贴你的代码,了解更多会有帮助。如果你能粘贴你的代码,了解更多会有帮助。在StackOverflow上摇摆..太棒了..!!你的公司正在为iPhone开发的新手提供培训吗?事实上,没有。这只是我公司要开发的新部门。我希望编程101的学生能够知道如何在课程的第二周后创建一系列年份值。在StackOverflow上摇摆..太好了..!!你们公司是否为iPhone开发的新生提供培训?Ac