我正在尝试创建一个排行榜,但是我在下面的行中遇到了一个sigabrt错误(我在上面评论了导致错误的行上的评论)。我按下完成按钮后立即崩溃,该按钮应该将其转移到排行榜上(这是一个表视图)
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)"
}
}
您可以使用SEGUE标识符来跟踪问题
if segue.identifier == "name" {
if let secondVC = segue.destination as? leaderboardVC {
print("ok")
}
else {
print(segue.destination)
}
}
一个常见的问题是您错过了在IB
Controller排行榜VC没有segue。当您强迫将SEGUE的目的地包裹在准备方法中时,崩溃发生。请检查segue是否存在。
,并始终使用可选的链接以防止坠机为:
if let destinationVC = segue.destination as? leaderboardVC {
print("ok")
}
您可以通过打印segue.destination的值来调试问题。
这是您可以做到这一点的几种方法:
1。)在完成按钮上的右键单击并删除座断式/未使用的连接。
2。)单击辅助ViewController的EventList。(查找视图 - 右键在控制器顶部的黄色圆圈上 - 找到未使用/无关的连接并删除它们!
3。)添加一个断点以检查错误的位置。并编辑您的线程,其中错误是
4。)DoubleCheck的标识符。确保您像写的那样进入狂热。
我99%肯定您在ViewController 1或2上与连接搞砸了一些东西。因此,请仔细检查一下!
如果这不起作用。粘贴您的错误,我会为您提供帮助。祝你好运。