- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我在设置 UIPickerView 时遇到问题。我已将其全部设置为教科书,我想更改字体大小,但是:
通过 attributedTitleForRow 更改字体大小没有效果(尽管更改颜色确实有效)
viewForRow 从不 被调用。 完全。
我正在使用 Xcode 8 和 Swift 2.3,目标是 iOS 8+。以下是所有相关的代码:
Interface Builder (IB) 连接:
@IBOutlet weak var synapse: UIPickerView!
链接到 UIViewController 的委托(delegate):
override func viewDidLoad() {
super.viewDidLoad()
// Préparation des gestionnaires de transition vers les différentes vues
self.transitionManagerNav.sourceViewController = self
self.transitionManagerNav.ordre = "travailleini2barrenav"
self.transitionManagerDesk.sourceViewController = self
self.transitionManagerDesk.ordre = "travailleini2desk"
self.synapse.dataSource = self
self.synapse.delegate = self
dateEnCours = graphique.pointDeReference.dateComplete
}
委托(delegate)实现:
// UIPICKERVIEWDELEGATE
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return elementsDefileur.count
}
func pickerView(pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat {
return 17
}
func pickerView(pickerView: UIPickerView, widthForComponent component: Int) -> CGFloat {
return synapse.frame.width
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
}
func pickerView(pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {
print("[viewForRow]") // THAT never happens (and yes, I am looking at the correct output window :o)
let pickerLabel = UILabel()
pickerLabel.textColor = UIColor.redColor()
pickerLabel.text = elementsDefileur[row]
pickerLabel.font = UIFont(name: "Arial-BoldMT", size: 5)
pickerLabel.textAlignment = NSTextAlignment.Left
return pickerLabel
}
我已经尝试了所有我能想到的,包括从代码中删除并重新创建 UIPickerView,然后从 (IB) 中删除,将委托(delegate)链接移动到 viewWillAppear,titleForRow/attributedTitleForRow/viewForRow 的每个组合,清理项目等.
我该如何解决这个问题?
最佳答案
您的委托(delegate)函数声明中的属性名称是错误的。它应该是'reusingView',而不是'reusing view':
func pickerView(pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusingView view: UIView?) -> UIView
我相信 Apple 文档包含错误。我遇到了同样的问题,并通过如上所述修复属性名称来修复它。
关于swift - UIPickerView:未调用 viewForRow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39665736/
我正在使用多个组件来制作计时器。当我将 pickerView 与 ViewForRow 合并时,我的 pickerView 无法识别我的第二个数据源 let hourDataSource = ["0"
当信息可用时,我正在动态地将数据添加到 pickerview。虽然我将数据添加到我的数组并调用 [picker reloadAllComponents] pickerview 不显示任何数据。 我还注
我在设置 UIPickerView 时遇到问题。我已将其全部设置为教科书,我想更改字体大小,但是: 通过 attributedTitleForRow 更改字体大小没有效果(尽管更改颜色确实有效) vi
我的 View 中有 3 个选择器,其中一个仅包含图像。 因此,对于这个,我必须使用 viewForRow,但对于其他 2 个,它们是带标签的常见选择器,我需要 titleForRow,除非我使用 v
我正在使用 UILabel 作为我的 UIPickerView 的自定义 View ,并且我试图将标签从左侧填充 10px 左右。但是,无论我将 UILabel 设置为哪个框架,它都会被忽略。 我基本
我正在尝试在 UIPickerView 中重新使用带有 subview 的 View : - (UIView *)pickerView:(UIPickerView *)pickerView
我正在尝试根据特定条件更改 viewForRow 中的文本颜色。当我按下按钮时, View 会更改为不同的颜色,但我也想更改选择器中文本的颜色。我使用“viewForRow”是因为我有自定义 View
我想继承 UIPickerView 以创建自定义 DatePicker。我试过了,但是 Swift 中有一个错误说: unexpectedly found nil while unwrapping a
我的 UIPickerView 使用 pickerView:viewForRow:forComponent:reusingView: 方法检索其数据。 由于某种原因,该方法不会影响 iOS 4.3 及
我是一名优秀的程序员,十分优秀!