swift - UIPickerView:未调用 viewForRow

标签 swift uipickerview

我在设置 UIPickerView 时遇到问题。我已将其全部设置为教科书,我想更改字体大小,但是:

  1. 通过 attributedTitleForRow 更改字体大小没有效果(尽管更改颜色确实有效)

  2. 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/

相关文章:

ios - NMAMapView 初始化失败 HERE iOS SDK 桥接

swift - 有没有办法在 switch 语句中将变量绑定(bind)到多个替代项?

ios - 使用 pickerview 填充 tableview

ios - UIPickerView 默认行

iphone - 在 iPhone 应用程序中选择整数的控件/方法是什么?

ios - 快速返回 GPS 位置的实用程序类?

swift - GMS反向地理编码坐标返回statusCode 400错误

ios - 在 iOS 上运行小型周期性高优先级后台任务

cocoa-touch - 如何获取 Swift ios 中的国家/地区列表?

iphone - 选择器值在部分中所有行的文本字段中重复?