【发布时间】:2014-12-13 06:03:59
【问题描述】:
我尝试了以下在 Obj-C 中有效的方法,但在 swift 中出现错误: '(@lvalue UIPickerView!, titleForRow: Int, forComponent: Int) -> $T7' 与'UIPickerView' 不同
func pickerView(pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusingView view: UIView!) -> UIView
{
var pickerLabel = UILabel()
pickerLabel.textColor = UIColor.whiteColor()
pickerLabel.text = pickerView(pickerView, titleForRow: row, forComponent: component)
return pickerLabel
}
这是 obj-c 的工作代码:
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view{
UILabel* pickerLabel = (UILabel*)view;
if (!pickerLabel){
pickerLabel = [[UILabel alloc] init];
[pickerLabel setFont:[UIFont fontWithName:@"Helvetica Neue Bold Italic" size:25]];
}
pickerLabel.textAlignment = NSTextAlignmentCenter;
pickerLabel.textColor = [UIColor whiteColor];
pickerLabel.text=[self pickerView:pickerView titleForRow:row forComponent:component];
return pickerLabel;
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
if (component == 0){
if ([unitType isEqualToString:@"MS"]) {
return [thickness objectAtIndex:row];
}else{
NSString *th = [thickness objectAtIndex:row];
float tt = [th floatValue]*0.039370078740157;
NSString *new_th = [NSString stringWithFormat:@"%2.2f",tt];
return new_th;
}
}
if(component ==1){
if ([unitType isEqualToString:@"MS"]) {
return [weight_data objectAtIndex:row];
}else{
NSString *wei = [weight_data objectAtIndex:row];
float ww = [wei floatValue]*2.205;
NSString *new_wei = [NSString stringWithFormat:@"%3.1f",ww];
return new_wei;
}
}
【问题讨论】:
-
3个参数的pickerView()方法的返回时间是多少
-
请给你看完整的代码..
-
pickerLabel.text=[self pickerView:pickerView titleForRow:row forComponent:component];显示完整代码。使用上面的方法再次获得正确的数据,因为数据可能需要再次计算。
-
显示创建标题的方法的整个 Swift 实现。
-
pickerView(_:titleForRow:forComponent:)pickerView(_:attributedTitleForRow:forComponent:)pickerView(_:viewForRow:forComponent:reusingView:)以上三个也可以显示pickerview的内容,但是不能同时使用,我莫名其妙用了两个。现在只使用最后一个,问题就解决了。谢谢大家。顺便说一句,它确实适用于 obj-c,所以我认为 swift 可以。
标签: swift uipickerview