我有一个视图控制器,我们将其称为AddAlarmViewController.swift,它位于导航控制器内部,在其中调用prepare(for segue: UIStoryboardSegue, sender: Any?)
这个AddAlarmViewController包括我的iOS应用程序中的一个屏幕,该屏幕创建一个新的Alarm,根据一些DatePickers的输入,将其添加到单独的UIViewController中的Alarms堆栈中。
在此prepare
方法内部,基本上在我从此AddAlarmViewController返回到AlarmTableViewController之前,我使用以下代码
// Configure the destination view controller only when the save button is pressed.
guard let button = sender as? UIBarButtonItem, button === saveButton else {
os_log("The cancel button was pressed, cancelling from AddAlarmViewController", log: OSLog.default, type: .debug)
return
}
之后,我将每个datePicker的时间拖入变量中,并使用这些变量构建Alarm对象。
问题是我所有用于确定时间是否有效(结束时间在开始时间等之前)的逻辑都包含在Alarm对象的init方法中,而不是包含在此AddAlarmViewController中,所以我似乎无法弄清楚输入无效时间后,如何更改要禁用的导航栏保存按钮项。我是否需要使AddAlarmViewController成为Alarm类的代表?
谢谢
最佳答案
我的建议是将逻辑纳入
func shouldPerformSegue(withIdentifier identifier: NSStoryboardSegue.Identifier, sender: Any?) -> Bool
那可以帮助您解决问题。
extension : UIViewController{
override func shouldPerformSegue(withIdentifier identifier: NSStoryboardSegue.Identifier, sender: Any?) -> Bool{
return true
}
}