我在使用此代码时遇到麻烦:
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var team1Field: UITextField!
@IBAction func rules(_ sender: Any)
{
performSegue(withIdentifier: "rulesegue", sender: self)
}
@IBAction func start(_ sender: Any)
{
if team1Field.text != ""
{
performSegue(withIdentifier: "segue", sender: self)
}
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
{
let secondController = segue.destination as! SecondViewController
secondController.team1String = team1Field.text!
}
}
请记住,我是一个初学者,所以您可能需要为我哑巴。
我有一个“主屏幕”,在该屏幕上,我有一个文本输入供用户输入其团队名称。然后有两个按钮“开始”和“规则”
开始进入SecondViewController,我试图通过执行“ rulesegue”来获取“ rules”以打开rulesViewController
在这行代码中,我收到以下错误:“线程1:信号SIGABRT”
let secondController = segue.destination as! SecondViewController
不确定为什么。
答案 0 :(得分:-1)
我认为您需要这样做
if segue.identifier == "segue" {
let secondController : SecondViewController = segue.destination as! SecondViewController
secondController.team1String = team1Field.text
}
或者如果您想使用segue.destination
if let secondController = segue.destination as? SecondViewController{
secondController.team1String = team1Field.text
}
答案 1 :(得分:-1)
问题是,当执行segue进入“规则视图控制器”时,您的代码仅将segue发送到第二个View Controller。
您需要使用以下代码:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == ”rules” {
let rulesController = segue.destination as! RulesViewController
} else if segue.identifier == ”second” {
let secondController = segue.destination as! SecondViewController
secondController.team1String = team1Field.text!
}
}
然后,您需要进入情节提要,然后单击小segue箭头/线到RulesViewController,并将标识符命名为“ rules”,然后对SecondViewController的segue做同样的操作,但将其命名为“ second”
此代码都在我的手机上键入,因此如果有任何错误请通知我,我会予以解决。如果您感到困惑,请写评论,我可以编辑我的答案。