添加 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)
希望对您有所帮助
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)
希望对您有所帮助