【发布时间】:2015-10-10 20:04:09
【问题描述】:
我正在尝试为 UIPickerView 实现单独的数据源和委托,以便我的类可以被更多地封装。我有以下委托,它应该在选择器移动时处理:
class LocationPickerViewDelegate : NSObject, UIPickerViewDelegate {
let months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
print(months[row]);
}
}
以及将数据存储在选择器中的这个数据源:
class LocationPickerViewDataSource : NSObject, UIPickerViewDataSource {
let months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return months[row]
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return months.count
}
}
这是我在视图控制器中实现的选择器视图。我将我的数据源和委托分配为我的新类:
class LocationPickerView: UIPickerView, UIPickerViewDelegate {
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.delegate = LocationPickerViewDelegate()
self.dataSource = LocationPickerViewDataSource()
}
}
但是我的数据源和委托从未使用过,并且选择器是空白的,这些方法都没有被调用过。但是,如果您在视图中实现这些并设置数据源并委托给自己,那么整个事情就会起作用。有没有人知道为什么会发生这种情况?我是否设置了错误的变量?
如果有人以前见过这个,并且知道出了什么问题,那就太好了。
谢谢。
【问题讨论】:
标签: ios objective-c swift delegates protocols