我有两个UIPickerController
s 在一个视图控制器中。我可以让一个工作,但是当我添加第二个时,我的应用程序崩溃了。这是我用于一个选择器视图的代码:
import UIKit
class RegisterJobPosition: UIViewController, UIPickerViewDelegate {
@IBOutlet weak var positionLabel: UILabel!
var position = ["Lifeguard", "Instructor", "Supervisor"]
override func viewDidLoad() {
super.viewDidLoad()
}
func numberOfComponentsInPickerView(PickerView: UIPickerView!) -> Int
{
return 1
}
func pickerView(pickerView: UIPickerView!, numberOfRowsInComponent component: Int) -> Int
{
return position.count
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String!
{
return position[row]
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
positionLabel.text = position[row]
}
}
现在,我怎样才能让第二个选择器工作呢?假设我的第二个选择器视图被称为location
(另一个叫做position
)。我尝试在选择器视图方法中复制代码location
但它不起作用。
这是我的解决方案:
- 在故事板中添加两个
UIPickerView
您的视图的实例
- 将第一个选择器的标签设置为
1
并设置2
对于“属性检查器”下的第二个选择器
-
control + drag from each picker to the top yellow view controller icon and choose
dataSource
. Repeat the same choosing delegate
-
add UIPickerViewDataSource
and UIPickerViewDelegate
到你的视图控制器:
class ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {
-
在视图控制器类中,为选择器创建空数组:
var picker1Options = []
var picker2Options = []
-
In viewDidLoad()
,用您的内容填充数组:
picker1Options = ["Option 1","Option 2","Option 3","Option 4","Option 5"]
picker2Options = ["Item 1","Item 2","Item 3","Item 4","Item 5"]
-
实现委托和数据源方法:
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
if pickerView.tag == 1 {
return picker1Options.count
} else {
return picker2Options.count
}
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
if pickerView.tag == 1 {
return "\(picker1Options[row])"
} else {
return "\(picker2Options[row])"
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)