【发布时间】:2018-07-15 23:53:35
【问题描述】:
所以我有一个带有 tableView 和 detailView 的 splitViewController。我想要的是在detailView中有一个按钮,当按下时,将两周添加到tableView(masterview)中的条形按钮项。我有所有的 segues 工作和设置,但每当我运行它时,都是可选的
这是在 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 函数确实运行,但它的方法返回错误“在展开可选值时意外发现 nil”,指的是 dateLabel.title。我不明白为什么它为零以及如何解决这个问题。是因为虽然我有一个 dateLabel.title 但实际的 dateLabel 是 nil 吗?请告诉我如何解决这个问题。谢谢
【问题讨论】:
-
我看不到任何代码将实际的
MasterViewController设置为属性textMC。效果如何? -
var textMC = MasterViewController() 这个?
-
该代码实例化了一个完全无用的空
MasterViewController。您最好将其声明为var textMC: MasterViewController?,而不是实例化这种无用的东西。如果除该行之外没有其他代码,则在未设置所有 IBOutlets 的空MasterViewController上调用sim(),从而导致“意外发现 nil”崩溃。 -
请显示您的代码以转换到您的详细视图控制器,您可能需要对其进行修改。
标签: swift date segue optional uisplitviewcontroller