Ios UIPickerView的完成按钮不';行不通
我试图将“完成”按钮放在我的选取器视图中,因为当我滑动选择一个项目时,uipickerview会自动选择滑动的行,所以我更希望按钮完成:Ios UIPickerView的完成按钮不';行不通,ios,swift,uipickerview,Ios,Swift,Uipickerview,我试图将“完成”按钮放在我的选取器视图中,因为当我滑动选择一个项目时,uipickerview会自动选择滑动的行,所以我更希望按钮完成: @IBOutlet var tfProjet: UITextField! var pvProjetData = ["-Choisir-", "Rachat de crédits", "Renégociation de crédits"] override func viewDidLoad() { super.viewDidLoad() le
@IBOutlet var tfProjet: UITextField!
var pvProjetData = ["-Choisir-", "Rachat de crédits", "Renégociation de crédits"]
override func viewDidLoad() {
super.viewDidLoad()
let pickerView = UIPickerView()
if DeviceType.IS_IPHONE_4_OR_LESS {
pickerView.frame=CGRectMake(0, 200, view.frame.width, 100)
} else if DeviceType.IS_IPHONE_5 {
pickerView.frame=CGRectMake(0, 200, view.frame.width, 200)
} else if DeviceType.IS_IPHONE_6 {
pickerView.frame=CGRectMake(0, 200, view.frame.width, 200)
} else if DeviceType.IS_IPHONE_6P {
pickerView.frame=CGRectMake(0, 200, view.frame.width, 250)
} else if UIDevice.currentDevice().userInterfaceIdiom == .Pad {
pickerView.frame=CGRectMake(0, 200, view.frame.width, 300)
}
// pickerView.backgroundColor = .whiteColor()
pickerView.showsSelectionIndicator = true
pickerView.delegate = self
pickerView.dataSource = self
self.pickerView = pickerView
let pickerToolBar = UIToolbar()
pickerToolBar.barStyle = UIBarStyle.Black //you can change the style
pickerToolBar.translucent = true
pickerToolBar.tintColor = UIColor.whiteColor() // or other colours
pickerToolBar.sizeToFit()
let spaceButtonPicker = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: nil, action: nil)
let cancelButtonPicker = UIBarButtonItem(title: "Ok", style: UIBarButtonItemStyle.Plain, target: self, action: "cancelDatePicker:")
pickerToolBar.setItems([cancelButtonPicker, spaceButtonPicker], animated: false)
pickerToolBar.userInteractionEnabled = true
tfDateNaissance.inputAccessoryView = pickerToolBar
tfProjet.inputView = pickerView
tfProjet.inputAccessoryView = pickerToolBar
}
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int{
return 1
}
func selectRow(row: Int, inComponent component: Int, animated: Bool){
}
func updatePicker(){
self.pickerView!.reloadAllComponents()
pickerView.selectRow(0, inComponent: 0, animated: false)
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
if tfProjet.isFirstResponder(){
return pvProjetData.count
}
return 1
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if tfProjet.isFirstResponder(){
return pvProjetData[row]
}
return ""
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if tfProjet.isFirstResponder(){
let itemselected = pvProjetData[row]
tfProjet.text = itemselected
self.tfProjet.endEditing(true)
}
}
我看到按钮Ok,但它不起作用,当我滑动时,行被自动选中。您可以选择一个
整数类型的变量。在选择器视图的didSelectRow
委托
中,将变量的值更改为选择器视图的行
。按您已经做的操作创建工具栏,并设置按钮的操作。无论您在didSelectRow中执行什么操作,请在按钮上单击操作。您没有为“确定”按钮设置任何目标操作。您需要设置一个在按下OK
时调用的函数,这样您就可以退出FirstResponder
或popViewController
或在按下该按钮时希望它执行的任何操作。@MatthewLawrenceBailey您正在谈论的是“func cancelDatePicker”(发送方:UIBarButtonItem){if tfProjet.isFirstResponder(){tfProjet.resignFirstResponder()}`是的,我只是在代码中没有看到这个函数。你设置了断点并确保func被调用了吗?@MatthewLawrenceBailey这个动作:“cancelDatePicker:”看起来很有效;但我的picker视图仍然没有出现