有两个按钮可以打开两个不同的视图控制器

时间:2019-01-11 00:19:08

标签: ios swift

我在使用此代码时遇到麻烦:

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

不确定为什么。

2 个答案:

答案 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”

此代码都在我的手机上键入,因此如果有任何错误请通知我,我会予以解决。如果您感到困惑,请写评论,我可以编辑我的答案。