ios – Swift 3 | Xcode 8 datePicker更新UItextField

代码允许您使用datePicker为 Xcode 7更新textField,但是当我尝试在Xcode 8和 Swift 3中实现它时,应用程序崩溃并在AppDelegate.swift文件中抛出SIGABRT错误.我检查了所有的@IB,并且没有任何需要删除的杂项连接.任何指导将不胜感激.
import UIKit

class ViewController: UIViewController,UITextFieldDelegate {
    @IBOutlet var eventStartText: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()

        eventStartText.delegate = self

        // Do any additional setup after loading the view.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // dispose of any resources that can be recreated.
    }

    // MARK: TextField Delegate
    func datePickerChanged(sender: UIDatePicker) {
        let formatter = DateFormatter()
        formatter.dateStyle = .full
        eventStartText.text = formatter.string(from: sender.date)

        print("Try this at home")
    }

    func textFieldDidBeginEditing(_ textField: UITextField) {
        let datePicker = UIDatePicker()
        textField.inputView = datePicker
        datePicker.addTarget(self,action: (Selector(("datePickerChanged:"))),for: .valueChanged)

        print("This Worked")
    }

    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        eventStartText.resignFirstResponder()
        return true
    }

    // MARK: Helper Methods
    func closekeyboard() {
        self.view.endEditing(true)
    }

    // MARK: Touch Events
    override func touchesBegan(_ touches: Set<UITouch>,with event: UIEvent?) {
        closekeyboard()
    }

    /*
     // MARK: - Navigation

     // In a storyboard-based application,you will often want to do a little preparation before navigation
     override func prepare(for segue: UIStoryboardSegue,sender: Any?) {
     // Get the new view controller using segue.destinationViewController.
     // Pass the selected object to the new view controller.
     }
     */
}

解决方法

问题在于选择器语法,从Swift 3中你需要在selector中指定第一个参数名,所以改变你的选择器语法.
datePicker.addTarget(self,action: #selector(datePickerChanged(sender:)),for: .valueChanged)

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...