尽管据说指标始终显示自ios7以来,我得到的是这样的:
这是我的实施:
class TimePicker: UIPickerView {
override func awakeFromNib() {
self.delegate = self
self.dataSource = self
self.showsSelectionIndicator = true
}
}
extension TimePicker: UIPickerViewDelegate {
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
let minutes = [0,1,2,3,4,5,6,7,8,9,10]
let seconds = [0,5,10,15,20,25,30,35,40,45,50,55]
switch component {
case 0: return minutes[row].description
default: return seconds[row].description
}
}
}
extension TimePicker: UIPickerViewDataSource {
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 2
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
switch component {
case 0:
return 11
default:
return 12
}
}
}
指针未显示的代码有什么问题,这看起来真的很糟糕?
答案 0 :(得分:-1)
你可以尝试使用UIPickerViewDelegate的其他替代委托方法来配置组件中行的视图,即
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view {
UILabel* label = nil;
if (view == nil) {
view = [[UIView alloc] init];
view.backgroundColor = [UIColor blueColor];
label = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 60, 22)];
NSString *rowTextValue;
switch component {
case 0: rowTextValue = [Nsstring StringWithFormat:@"%d",minutes[row]]; break;
default: rowTextValue = [Nsstring StringWithFormat:@"%d", seconds[row]]; break;
}
label.text = rowTextValue;
[view addSubview:label];
}
if (label == nil) {
NSLog(@"%@",view.subviews);
label = view.subviews[0]; // I do get subviews here.
}
return view;
}