我的ViewController中有一个UIPickerView
。起初我想使用attributedTitleForRow()
,但我需要缩小字体大小,因此我使用了viewForRow...reusingView()
。因为我不想重写attributedTitleForRow()
的代码,所以我做了以下事情:
let attributedString = pickerView(
pickerView, attributedTitleForRow: row,
forComponent: component)
之后我想设置newView的属性(UILabel
).attributedText = attributedString
我从上面的行中收到错误:pickerView(...) -> $T4 is not identical to
其余的没有显示在我的屏幕上,但通常是休息只有UInt8
。我不知道哪里出错了。任何帮助都会很棒:]
viewForRow()
函数中的整个代码:
var newView = view as? UILabel
if newView == nil {
newView = UILabel()
}
newView!.font = UIFont.systemFontOfSize(16.0)
newView!.textColor = UIColor.blueColor()
newView!.adjustsFontSizeToFitWidth = true
newView!.minimumScaleFactor = 0.6
newView!.attributedText = (
pickerView(pickerView, attributedTitleForRow: row,
forComponent: component))!
newView!.textAlignment = .Center
return newView!
调用另一个pickerView函数的行不起作用 - 不仅仅是它现在在上面代码中的方式
答案 0 :(得分:1)
使用self
重写关键字,一切都会好起来:
newView!.attributedText = self.pickerView(
pickerView, attributedTitleForRow:row,
forComponent:component)
这将允许您的代码编译。
原因显然是方法参数中的pickerView
使您现有的pickerView...
方法黯然失色。使用self
消除歧义。
(但是,我担心这永远不会起作用,因为永远不会调用此代码。如果实现了attributedTitleForRow
,可能会忽略viewForRow
?您将需要进行实验并查看我的担忧是否合理。)