我不知道我的密码有什么问题。我试着遵循这个教程,但是同样的错误也会发生。
错误:
类型'FourthViewController‘不符合协议'UIPickerViewDataSource’
这是我的代码:
import UIKit
let characters = ["Jaja Bink", "Luke", "Han Solo", "Princess Leia"];
let weapons = ["LightSaber", "Pistol", "Keris"];
class FourthViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {
@IBOutlet weak var doublePicker: UIPickerView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 2
}
func pickerView(pickerView: UIPickerView,
titleForRow row: Int,
forComponent component: Int) -> String? {
if component == 0 {
return characters[row]
} else {
return weapons[row]
}
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int? {
if component == 0 {
return characters.count
} else {
return weapons.count
}
}
}发布于 2016-12-27 08:23:08
如果您使用的是UIPickerViewDataSource,则可以替换协议Swift 3的不推荐版本。
协议不推荐的方法
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 1
}Swift 3 3协议的最新方法
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}注意:对于其他所需的协议方法,也是相同的。i.e
被反对的:
func pickerView(pickerView: UIPickerView!, numberOfRowsInComponent component: Int) -> Int
最新版本:
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int
发布于 2016-08-29 05:19:03
因为所需的委托方法不正确。
代之以:
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
if component == 0 {
return characters.count
} else {
return weapons.count
}
}委托方法返回不正确的Int?。
发布于 2016-08-29 05:19:24
您必须实现它的功能:
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Inthttps://stackoverflow.com/questions/39198893
复制相似问题