大家好,我正在尝试制作一些我需要的实用程序,例如 Pokedex kk
但我有一些问题。我在单独的 View 中创建选择器,然后在选项卡 View 中调用该 View 并使用它。
但我不知道如何设置数据。如果我在 uiviewcontroller 中创建选择器,我可以在 didload? 方法中设置数据,但在 uiview 中没有可以设置的 didload 方法。
这是我的代码
SelectPoke.swift
class SelectPoke: UIView , UIPickerViewDelegate , UIPickerViewDataSource{
@IBOutlet var textField: UITextField!
var data = ["1","2","3"]
var picker = UIPickerView()
public func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
public func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int{
return data.count
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
textField.text = data[row]
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return data[row]
}
func h(){
picker.delegate = self
picker.dataSource = self
}
override func awakeFromNib() {
h()
}
class func instanceFromNib() -> UIView {
return UINib(nibName: "SelectPoke", bundle: nil).instantiate(withOwner: nil, options: nil)[0] as! UIView
}
}
Tab1ViewController.swift
class Tab1ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let sideView = SelectPoke.instanceFromNib()
sideView.frame = self.view.frame
self.view.addSubview(sideView)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
请帮助我。我的口袋妖怪正在等待..
最佳答案
通常,您不会子类化 UIPickerView
,而是在 Storyboard(或 XIB 文件)中创建一个 View 并
使用 Tab1ViewController
连接委托(delegate)和数据源。
尽管如此,在此代码中,我们将在 viewDidLoad
中创建一个新的 UIPickerView
,以使代码与原始问题类似
备注:目前我没有运行 Xcode,因此此代码示例中可能存在小语法错误
class Tab1ViewController: UIViewController, UIPickerViewDelegate , UIPickerViewDataSource {
var data = ["1","2","3"]
override func viewDidLoad() {
super.viewDidLoad()
let sideView = UIPickerView()
sideView.frame = self.view.frame
self.view.addSubview(sideView)
sideView.delegate = self
sideView.dataSource = self
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
public func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
public func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int{
return data.count
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
textField.text = data[row]
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return data[row]
}
}
关于iOS-当我使用 uiview 到 uiviewcontroller 时如何设置选择器数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42085211/