【发布时间】:2014-12-24 21:04:57
【问题描述】:
我在一个视图控制器中有两个UIPickerControllers。我可以让一个工作,但是当我添加第二个时,我的应用程序崩溃了。这是我用于一个选择器视图的代码:
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 的选择器视图方法中复制代码,但它不起作用。
【问题讨论】:
-
如果您的视图控制器是处理用户交互的唯一代表,您将需要一种方法来区分这两者。你能发布你用来区分它们的代码吗?
-
我只是复制代码。比如在numberOfRowsInComponent方法中,我只是放了:return location.count
-
这部分是有道理的。但是,您如何以编程方式确定要返回计数的选择器实例?如果您有两个选择器实例向您的单个视图控制器(委托)发送消息,您需要一种方法来识别选择器,以便您可以执行适当的分支逻辑并为正确的选择器返回正确的计数。
-
啊....我无法设置“虚拟”变量来告诉应用程序我想要哪个选择器,因为我希望两者同时可用.....我还能怎么做?
-
我写过一篇文章,通过标签属性来区分多个UIActionSheets:bit.ly/DistinguishUIActionSheetsSwift -- 虽然不完全一样,但场景是相似的。
标签: xcode swift uipickerview