迅速出现segue.destination的SIGABRT错误

时间:2019-03-16 16:13:04

标签: ios swift

我正在尝试创建一个页首横幅,但在下面的行中出现了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)"    
}
}

3 个答案:

答案 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上的连接上有螺丝钉。请仔细检查!

如果这不起作用。粘贴您的错误,我会帮助您。祝你好运。