尝试设置 UIPickerView 的数据源时出错
Error trying to setup a UIPickerView's data source
我收到此错误:/Users/natumyers/Desktop/proj/SignUp2ViewController.swift:11:7:类型 'SignUp2ViewController' 不符合协议 'UIPickerViewDataSource'。我正在学习本教程 http://codewithchris.com/uipickerview-example/,但我有一个与默认视图控制器不同的视图控制器。
import UIKit
class SignUp2ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
@IBOutlet weak var signuplabel: UITextField!
var labelText = String()
@IBOutlet weak var focusPicker: UIPickerView!
var focusPickerData: [String] = [String]()
override func viewDidLoad() {
super.viewDidLoad()
// Connect data:
self.focusPicker.delegate = self
self.focusPicker.dataSource = self
focusPickerData = ["type1","type2","type3","type4"]
signuplabel.text = labelText
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
解决方案
这些功能是实现这一目标的关键。我补充说:
// The number of columns of data
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 1
}
// The number of rows of data
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return focusPickerData.count
}
// The data to return for the row and component (column) that's being passed in
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return focusPickerData[row]
}
在 didReceiveMemoryWarning 函数之后。
您的视图控制器不符合 UIPickerViewDataSource 协议。您需要实现这两个必需的方法:
numberOfComponentsInPickerView(_:)
pickerView(_:numberOfRowsInComponent:)
The data source provides the picker view with the number of components, and the number of rows in each component, for displaying the picker view data. Both methods in this protocol are required.
我收到此错误:/Users/natumyers/Desktop/proj/SignUp2ViewController.swift:11:7:类型 'SignUp2ViewController' 不符合协议 'UIPickerViewDataSource'。我正在学习本教程 http://codewithchris.com/uipickerview-example/,但我有一个与默认视图控制器不同的视图控制器。
import UIKit
class SignUp2ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
@IBOutlet weak var signuplabel: UITextField!
var labelText = String()
@IBOutlet weak var focusPicker: UIPickerView!
var focusPickerData: [String] = [String]()
override func viewDidLoad() {
super.viewDidLoad()
// Connect data:
self.focusPicker.delegate = self
self.focusPicker.dataSource = self
focusPickerData = ["type1","type2","type3","type4"]
signuplabel.text = labelText
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
解决方案
这些功能是实现这一目标的关键。我补充说:
// The number of columns of data
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 1
}
// The number of rows of data
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return focusPickerData.count
}
// The data to return for the row and component (column) that's being passed in
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return focusPickerData[row]
}
在 didReceiveMemoryWarning 函数之后。
您的视图控制器不符合 UIPickerViewDataSource 协议。您需要实现这两个必需的方法:
numberOfComponentsInPickerView(_:)
pickerView(_:numberOfRowsInComponent:)
The data source provides the picker view with the number of components, and the number of rows in each component, for displaying the picker view data. Both methods in this protocol are required.