我正在尝试创建一个页首横幅,但在下面的行中出现了SIGABRT错误(我在引起该错误的行上方进行了注释)。按下完成按钮后,我的应用程序立即崩溃,该按钮应该连接到LeaderboardVC(这是表格视图)
var yourScore = 0
class secondVC: UIViewController {
@IBOutlet weak var scoreLabel: UILabel!
@IBOutlet weak var nameTF: UITextField!
@IBOutlet weak var doneButton: UIButton!
@IBAction func donePressed(_ sender: Any) {
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
//SIGABRT error
let secondVC = segue.destination as! leaderboardVC
secondVC.tempNumber = yourScore
secondVC.tempName = nameTF.text ?? "Player"
secondVC.organise()
}
override func viewDidLoad() {
super.viewDidLoad()
scoreLabel.text = "Your score is: \(yourScore)"
}
}
答案 0 :(得分:1)
您可以使用segue标识符来跟踪问题
if segue.identifier == "name" {
if let secondVC = segue.destination as? leaderboardVC {
print("ok")
}
else {
print(segue.destination)
}
}
一个常见的问题是您错过了在IB中设置班级名称的机会
答案 1 :(得分:0)
对控制器排行榜VC没有任何影响。当您用prepare方法强制包装segue的目的地时,就会发生崩溃。请检查segue是否存在。
并且始终使用可选的链接来防止崩溃,例如:
if let destinationVC = segue.destination as? leaderboardVC {
print("ok")
}
您可以通过打印segue.destination的值来调试问题。
答案 2 :(得分:0)
以下是您可以执行此操作的几种方法:
1。)右键单击完成按钮,然后删除重复的/未使用的连接。
2。)单击辅助ViewController的事件列表。 (查找视图-右键单击控制器顶部的黄色圆圈-查找未使用/不相关的连接并将其删除!
3。)添加一个断点以检查错误发生的位置。并编辑错误所在的线程
4。)仔细检查segue的标识符。确保您输入的内容正确无误。
我有99%的把握确定您在Viewcontroller 1或2上的连接上有螺丝钉。请仔细检查!
如果这不起作用。粘贴您的错误,我会帮助您。祝你好运。