更改初始行 pickerView

change initial row pickerView

我读到 here 你必须在 viewDidAppear() 中使用 pickerView.selectRow。虽然 pickerView.selectRowfunc pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) 中工作,但在 viewDidAppear() 中不起作用。

我只想将初始行设置为 0 以外的另一行

我在这里错过了什么?

import UIKit

class FirstViewController: UIViewController, UIPickerViewDelegate {

    let scrollerOfset = 100
    var kiloMeters = [Int](-100...200)

    @IBOutlet weak var pickerActive: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()


        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    override func viewDidAppear(animated: Bool) {
        super.viewDidAppear(animated)
        pickerView.selectRow(scrollerOfset, inComponent: 0, animated: false)
    }

}

Xcode 给出此错误

Cannot invoke 'selectRow' with an argument list of type '(Int, inComponent: Int, animated: Bool)' at line 32 (in viewDidAppear(animated: Bool))

更新

代码更改为此以使其工作:

import UIKit

class FirstViewController: UIViewController, UIPickerViewDelegate {

    let scrollerOfset = 100
    var kiloMeters = [Int](-100...200)

    @IBOutlet weak var pickerActive: UILabel!
    @IBOutlet weak var picker: UIPickerView!

    override func viewDidLoad() {
        super.viewDidLoad()


        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    override func viewDidAppear(animated: Bool) {
        super.viewDidAppear(animated)
        picker.selectRow(scrollerOfset, inComponent: 0, animated: false)
    }

}

您的 class 中似乎缺少 pickerView 属性 的声明,请尝试在 pickerActive 下声明它,例如

  @IBOutlet weak var pickerActive: UILabel!
  @IBOutlet weak var picker: UIPickerView!

然后像 pickerActive

一样通过 IB 连接它