SpriteKit 中的 UIPickerView
UIPickerView in SpriteKit
我正在将 UIPickerView 添加到 SpriteKit 场景中。代码如下所示:
import UIKit
import SpriteKit
class MyScene: SKScene, UITextFieldDelegate, UIPickerViewDelegate, UIPickerViewDataSource {
let myField = UITextField(frame: CGRectMake(UIScreen.mainScreen().bounds.size.width * 0.4, UIScreen.mainScreen().bounds.size.height * 0.35, 200, 30))
let myPickOptions = ["One", "Two", "Three"]
override func didMoveToView(view: SKView) {
super.didMoveToView(view)
let myPickerView : UIPickerView = UIPickerView()
myField.inputView = genderPickerView
myField.font = UIFont.systemFontOfSize(15)
myField.borderStyle = UITextBorderStyle.RoundedRect
myPickerView.dataSource = self
myField.delegate = self
self.view!.addSubview(myField)
}
func numberOfComponentsInPickerView(pickerView: UIPickerView!) -> Int{
return 1
}
func pickerView(pickerView: UIPickerView!, numberOfRowsInComponent component: Int) -> Int{
return myPickOptions.count
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return myPickOptions[row]
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)
{
myField.text = "\(myPickOptions[row])"
}
当我点击 textField 内部但没有数据(选择器中只有一些问号)时,选择器出现在屏幕上。
知道哪里出了问题吗?
补充编辑:
当我查看这两个数据源方法时,我看到正确返回的行数计数,尽管它被返回了 28 次。也许这很正常,但看起来很奇怪。当我查看委托方法时,看起来第一个方法根本没有被调用(没有返回行数据)。
并解决了...
我需要添加第二个代表:
myPickerView.delegate = self
我错过了第二个代表.. 添加后一切正常
我正在将 UIPickerView 添加到 SpriteKit 场景中。代码如下所示:
import UIKit
import SpriteKit
class MyScene: SKScene, UITextFieldDelegate, UIPickerViewDelegate, UIPickerViewDataSource {
let myField = UITextField(frame: CGRectMake(UIScreen.mainScreen().bounds.size.width * 0.4, UIScreen.mainScreen().bounds.size.height * 0.35, 200, 30))
let myPickOptions = ["One", "Two", "Three"]
override func didMoveToView(view: SKView) {
super.didMoveToView(view)
let myPickerView : UIPickerView = UIPickerView()
myField.inputView = genderPickerView
myField.font = UIFont.systemFontOfSize(15)
myField.borderStyle = UITextBorderStyle.RoundedRect
myPickerView.dataSource = self
myField.delegate = self
self.view!.addSubview(myField)
}
func numberOfComponentsInPickerView(pickerView: UIPickerView!) -> Int{
return 1
}
func pickerView(pickerView: UIPickerView!, numberOfRowsInComponent component: Int) -> Int{
return myPickOptions.count
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return myPickOptions[row]
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)
{
myField.text = "\(myPickOptions[row])"
}
当我点击 textField 内部但没有数据(选择器中只有一些问号)时,选择器出现在屏幕上。
知道哪里出了问题吗?
补充编辑: 当我查看这两个数据源方法时,我看到正确返回的行数计数,尽管它被返回了 28 次。也许这很正常,但看起来很奇怪。当我查看委托方法时,看起来第一个方法根本没有被调用(没有返回行数据)。
并解决了... 我需要添加第二个代表:
myPickerView.delegate = self
我错过了第二个代表.. 添加后一切正常