在条形按钮中更新日期

时间:2018-07-15 23:53:35

标签: swift date segue optional uisplitviewcontroller

所以我有一个带有tableView和detailView的splitViewController。我想要的是在detailView中有一个按钮,当按下该按钮时,要为tableView(masterview)中的条形按钮项增加两个星期的时间。我已经完成了所有的任务,但是每当我运行它时,都可以选择

这是在detailView中运行的segue

 var textMC = MasterViewController()

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if ((segue.destination as? UISplitViewController) != nil) {
        textMC.sim()
    }

然后在masterView中

    func sim() {
    let previousDate = dateLabel.title
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "MM/dd/yy"
    let previousDateFormated : Date? = dateFormatter.date(from: previousDate!)
    let date = Calendar.current.date(byAdding: .day, value: 14, to: (previousDateFormated)! )
    let stringDate = dateFormatter.string(from: date!)
    dateLabel.title = stringDate
}



override func viewDidLoad() {
    super.viewDidLoad()

    let date = Date(timeIntervalSinceReferenceDate: 632880000)
    let formatter = DateFormatter()
    formatter.dateFormat = "MM/dd/yy"
    let result = formatter.string(from: date)
    dateLabel.title = result

update()

}

viewDidLoad函数确实使初始dateLabel.title为正确的日期,并且sim函数确实运行,但是其方法返回错误“引用dateLabel.title的意外发现nil,同时展开一个可选值”。我不明白为什么它为零以及如何解决此问题。是因为尽管我有一个dateLabel.title,但实际的dateLabel为零?请告诉我如何解决此问题。谢谢

1 个答案:

答案 0 :(得分:0)

此行:

 var textMC = MasterViewController()

错了。这将创建一个全新的MasterViewController()实例,它完全没有视图内容。你永远都不要那样做。

相反,将当前视图控制器中的序列添加到情节提要中的MasterViewController场景中,为其指定标识符,然后使用

performSegue(withIdentifier: "yourMasterVCIdentifierHere")

然后实现prepareForSegue这样的东西:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if let dest = segue.destination as? MasterViewController {
       textMC
    }
}