【发布时间】:2016-07-30 15:23:41
【问题描述】:
我知道这里有很多意想不到的 nil 值问题,但我尝试了其他方法,但它们对我不起作用。底部的函数是从另一个视图控制器上的按钮调用的。基本上问题是此代码按预期工作,表单元素将 DatePicker 作为输入视图,并在值更改时更新 startDatePickerField.text,所以我知道 startDatePickerField.text 不为空,因为它显示在屏幕。但是,当从另一个包含我们正在使用的视图控制器调用 testForValidity() 函数时,我得到“在展开选项值错误时意外发现 nil”。所有的插座都连接正确,所以我知道不是这样。
class popoverTableViewController: UITableViewController, UIPickerViewDelegate, UIPickerViewDataSource {
@IBOutlet var startDatePickerField: UITextField!
override func viewDidLoad() {
let startDatePicker:UIDatePicker = UIDatePicker()
startDatePicker.datePickerMode = UIDatePickerMode.dateAndTime
startDatePickerField.inputView = startDatePicker
startDatePicker.minuteInterval = 5
startDatePicker.addTarget(self, action: #selector(popoverTableViewController.startDatePickerValueChanged(_:)), for: UIControlEvents.valueChanged)
}
@IBAction func startDateDidBegin(_ sender: AnyObject) {
}
func startDatePickerValueChanged(_ sender: UIDatePicker) {
let dateFormatter = DateFormatter()
dateFormatter.dateStyle = DateFormatter.Style.long
dateFormatter.timeStyle = DateFormatter.Style.short
startDatePickerField.text = dateFormatter.string(from: sender.date)
finishDateTime = sender.date
}
以及出错的函数:
func testForValidity() {
print(startDatePickerField.text)
}
【问题讨论】:
-
testForValidity() 在哪里?在 popoverTableViewController 中?你怎么称呼它?
-
testForValidity() 在 popoverTableViewController 是的,这是按下按钮后另一个类的简单调用。我已经意识到这个方法调用了我的 popoverTableViewController 的一个新实例,这就是我收到错误的原因。我认为修复与 NSNotificationCentre 有关,但我不确定如何实现它。