【发布时间】:2015-02-19 18:43:54
【问题描述】:
解决方案:我可以在时间改变时触发一个 NSTimer,方法是在 viewDidLoad 的开头创建它。
上一条消息:
我想更改 UIPickerView 中列表中的内容,以便第一个选项始终是当前小时 +1。如果用户在 15:59 启动应用程序,则第一项将是 16:00。但如果是 16:01,第一项应该是 17:00。
如何重新加载数据,以便用户在任何时候查看选择器时,第一项始终是 currentHour+1?
我重新初始化loadData()中的array,如果我在viewforRow中添加它,pickerView是空的。
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return array.count
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
return array[row]
}
func loadData(){
var formatter = NSDateFormatter()
formatter.dateFormat = "HH"
let date = NSDate()
let str = formatter.stringFromDate(date)
let hourNow = str.toInt()!
if ( hourNow+1 < 22 ){
array = [String]()
for (var i = hourNow+1; i<22; i++) { //if 15:00:
let num : Int = i //starts at 16:00
array.append(num.toString())
}
}
}
//view for row
func pickerView(pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusingView view: UIView!) -> UIView {
var mView = UIView(frame: CGRectMake(0,0, 50,20))
let label = UILabel(frame:CGRectMake(0,0, 50,20))
label.text = array[row]
mView.addSubview(label)
return mView
}
【问题讨论】:
标签: ios swift datepicker uipickerview