【发布时间】:2018-07-16 11:58:45
【问题描述】:
美好的一天。我正在创建自己的第一个应用程序并遇到了问题。我有一个带有可点击内容的 AR 场景,当您触摸它们时,segue 会触发 ViewController 并根据屏幕上触摸的内容设置视图控制器标签和文本视图。
说明: 1. CaseViewController 是目标视图控制器。 2. "artNews" 和 "politicalNews" 是字符串数组,我在其中写了 3 个字符串,它们被定义并且永远不会为 nil。
问题:由于 segueInputText 为 nil,我遇到了崩溃。为什么它会变成 nil,我该如何纠正它?
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let destinationVC = segue.destination as! CaseViewController
destinationVC.segueInputText = sender as? [String]
print("\(String(describing: sender))")
}
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
guard let touchLocation = touches.first?.location(in: sceneView),
let hitNode = sceneView?.hitTest(touchLocation, options: nil).first?.node,
let nodeName = hitNode.name
else { return }
if nodeName == imageNameArray[0] {
performSegue(withIdentifier: "CaseViewController", sender: artNews)
} else {
print("Found no node connected to \(nodeName)")
return
}
if nodeName == imageNameArray[1] {
performSegue(withIdentifier: "CaseViewController", sender: politicalNews)
} else {
print("Found no node connected to \(nodeName)")
return
}
CaseViewController 连接了 UILabels 和 UITextViews 并且这个:
var segueInputText : [String]? {
didSet {
setupText()
}
}
func setupText() {
// Why are these values nil?
testLabel.text = segueInputText![0]
ingressLabel.text = segueInputText![1]
breadLabel.text = segueInputText![2]
testLabel.reloadInputViews()
ingressLabel.reloadInputViews()
breadLabel.reloadInputViews() //breadLabel is a UITextView
}
感谢您阅读我的问题! 亲切的问候。
【问题讨论】: