添加 UIDatePicker 后,打印错误

After adding UIDatePicker, it prints error

import UIKit

class AddPartyViewController: UIViewController, UITextFieldDelegate
{
    @IBOutlet weak var textName: UITextField!
    @IBOutlet weak var textAddress: UITextField!
    @IBOutlet weak var textDate: UITextField!

    var date:NSDate?
    var datePickerView: UIDatePicker?

    override func viewDidLoad()
    {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        datePicker()
    }

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

    @IBAction func buttonAddParty_Click(sender: UIButton)
    { 
        party.addParty(name: textName.text!, address:textAddress.text!)

        self.view.endEditing(true)

        textName.text = ""
        textAddress.text = ""
    }

    func datePicker()
    {
        datePickerView = UIDatePicker()
        datePickerView?.datePickerMode = UIDatePickerMode.date
        datePickerView?.addTarget(self, action: Selector("handlePickerView:"), for: .valueChanged)

        textDate.inputView = datePickerView
    }

    func handlePickerView(sender: UIDatePicker)
    {
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "MM dd, yyy"
        date = sender.date as NSDate?
        textDate.text = dateFormatter.string(from: sender.date)
    }
}

上面是添加待办事项列表代码,下面是表格视图代码

import UIKit

class PartiesTableViewController: UIViewController,    UITableViewDelegate, UITableViewDataSource
{
    @IBOutlet var tblLists: UITableView!

    override func viewDidLoad()
    {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

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

    //returning to view
    override func viewWillAppear(_ animated: Bool)
    {
        tblLists.reloadData()
    }

    //UITableViewDataSource
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
    {
        return party.lists.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
    {
        let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.subtitle, reuseIdentifier: "test")

        cell.textLabel?.text = party.lists[indexPath.row].name
        //cell.textLabel?.text = party.lists[indexPath.row].date
        cell.detailTextLabel?.text = party.lists[indexPath.row].address

        return cell
    }

    //UITableViewDelegate - delete
    func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath)
    {
        if(editingStyle == UITableViewCellEditingStyle.delete)
        {
            party.lists.remove(at: indexPath.row)

            tblLists.reloadData()
        }
    }
}  

我正在使用 Swift 处理待办事项列表 3. 我想做的是通过在 AddPartyViewController 的文本字段中输入来添加名称、地址和日期。名称和地址是字符串,但日期是来自 UIDatePicker 的日期。但问题是当我点击日期选择并在模拟器的 UIDatePicker 中选择一个日期时,它给出了这个错误:

libc++abi.dylib: terminating with uncaught exception of type NSException

有人可以帮我解决这个问题吗?有问题请问我

在你的代码datePicker()方法中这个

有选择器问题
datePickerView?.addTarget(self, action: Selector("handlePickerView:"), for: .valueChanged)

删除上面的行并替换此行

datePickerView?.addTarget(self, action: #selector(AddPartyViewController.handlePickerView(sender:)), for: .valueChanged)

希望对您有所帮助