Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios textfields inputAccessoryView我的自定义pickerview带工具栏-swift_Ios_Iphone_Swift_Uipickerview - Fatal编程技术网

Ios textfields inputAccessoryView我的自定义pickerview带工具栏-swift

Ios textfields inputAccessoryView我的自定义pickerview带工具栏-swift,ios,iphone,swift,uipickerview,Ios,Iphone,Swift,Uipickerview,我有一个定制的pickerview,并连接两个文本字段 但我对我的pickerview有些疑问。 pickerview有一个工具栏和两个按钮(完成和取消)。单击文本字段1时。“完成”和“取消”没有操作。 然后单击文本字段2。“完成”和“取消”也没有操作。 最后,我返回单击文本字段1。按钮调用我的取消和完成功能成功。 我想问我应该怎么做,让我的按钮在第一次点击时工作 这是自定义pickerview中的代码: import UIKit import SnapKit class PickerView

我有一个定制的pickerview,并连接两个文本字段
但我对我的pickerview有些疑问。

pickerview有一个工具栏和两个按钮(完成和取消)。
单击文本字段1时。“完成”和“取消”没有操作。
然后单击文本字段2。“完成”和“取消”也没有操作。
最后,我返回单击文本字段1。按钮调用我的取消和完成功能成功。
我想问我应该怎么做,让我的按钮在第一次点击时工作

这是自定义pickerview中的代码:

import UIKit
import SnapKit

class PickerView: UIView {

var toolbar:UIToolbar       = UIToolbar()
var picker :UIPickerView    = UIPickerView()
var done   :UIBarButtonItem = UIBarButtonItem()
var cancel :UIBarButtonItem = UIBarButtonItem()


override init(frame: CGRect) {
    super.init(frame:frame)

    translatesAutoresizingMaskIntoConstraints = false
    loadContent()
}

func loadContent() {

    toolbar.sizeToFit()
    let flexSpace = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: self, action: nil)
    toolbar.items = [cancel,flexSpace,done]
    addSubview(toolbar)
    addSubview(picker)
}

}
视图控制器

 import UIKit

 class ViewController: UIViewController , UIPickerViewDelegate , UIPickerViewDataSource {

  var textField1:UITextField = UITextField()  
  var textField2:UITextField = UITextField()  
  var pick1:PickerView = PickerView()
  var pick2:PickerView = PickerView()

    override func loadView() {
    super.loadView()

    loadElement()
    }

      func loadElement() {

       view.addSubview(textField1)
       view.addSubview(textField2)
    }
     override func viewDidLoad() {
     super.viewDidLoad()

      pick1.picker.delegate = self
      pick1.picker.dataSource = self
      pick2.picker.delegate = self
      pick2.picker.dataSource = self
      textField1.inputView = pick1.picker
      textField1.inputAccessoryView = pick1.toolbar
      textField2.inputView = pick2.picker
      textField2.inputAccessoryView = pick2.toolbar

      //pickerview setting
      pick1.picker.showsSelectionIndicator = true
      pick1.picker.tag = 0
      pick1.done.action = #selector(done1Clicked)
      pick1.cancel.action = #selector(cancel1Clicked)

      pick2.picker.showsSelectionIndicator = true
      pick2.picker.tag = 1
      pick2.done.action = #selector(done2Clicked)
      pick2.cancel.action = #selector(cancel2Clicked)

    }

    //don't call these functions !!!!!!

    func cancel1Clicked(sender:UIBarButtonItem) {

    textField1.resignFirstResponder()
    }

    func done1Clicked(sender:UIBarButtonItem) {

    textField1.resignFirstResponder()
    }

    func cancel2Clicked(sender:UIBarButtonItem) {

    textField2.resignFirstResponder()
    }

    func done2Clicked(sender:UIBarButtonItem) {

    textField2.resignFirstResponder()
    }

   }

您从未在这两个按钮上设置
目标
,只有
操作
。感谢您的建议,这是有效的。