Ios 使用prepareForSegue传递数据

Ios 使用prepareForSegue传递数据,ios,swift,swift2,sender,Ios,Swift,Swift2,Sender,我试图将数据从viewController 1传递到viewController 2,我有两个按钮和一个segue(因此有一个segue标识符)用于这两个按钮,按下每个按钮时应显示:1个标签显示标题,1个textView显示定义,我很难显示每个单词的自身数据;我知道它必须是引用performsguewithidentifier中发送者的某个代码,但我不知道怎么做 我感谢你的帮助!!!谢谢 这是我的密码 class ViewController: UIViewController { @

我试图将数据从viewController 1传递到viewController 2,我有两个按钮和一个segue(因此有一个segue标识符)用于这两个按钮,按下每个按钮时应显示:1个标签显示标题,1个textView显示定义,我很难显示每个单词的自身数据;我知道它必须是引用performsguewithidentifier中发送者的某个代码,但我不知道怎么做

我感谢你的帮助!!!谢谢

这是我的密码

class ViewController: UIViewController {

    @IBAction func AbstractionBtn(sender: AnyObject) {
        performSegueWithIdentifier("ShowDefinition", sender: "Abstraction")
    }

    @IBAction func binarySystemBtn(sender: AnyObject) {
        performSegueWithIdentifier("ShowDefinition", sender: "Binary System")

    }

 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if (segue.identifier == "ShowDefinition") {
            if let destinationViewController = segue.destinationViewController as? EnglishViewController {
                destinationViewController.titleMsg = "Abstraction"
                destinationViewController.definitionMsg = "Abstraction Definition"
            }
    } else if(segue.identifier == "ShowDefinition"){if let destinationViewController = segue.destinationViewController as? EnglishViewController {
            destinationViewController.titleMsg = "Binary System"
            destinationViewController.definitionMsg = "Binary System Definition"
            }
        }    
}

创建名为
titleMsg
definitionMsg
的变量。 在每个@iAction方法中,将适当的标题消息设置为
self.titleMsg
,类似地设置为
self.definitionMsg

那次电话之后,

performSegueWithIdentifier("ShowDefinition", sender: self)
然后覆盖

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "ShowDefinition" {
        let destinationVC = segue.destinationViewController as? EnglishViewController
        destinationVC.titleMsg = self.titleMsg
        destinationVC.definitionMsg = self.definitionMsg
    }
}
希望有帮助

试试这个

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
{
    if (segue.identifier == "ShowDefinition")
    {
        if let destinationViewController = segue.destinationViewController as? EnglishViewController
        {
             var btn = sender as! UIButton
            if btn.tag == 1
            {
                destinationViewController.titleMsg = "Abstraction"
                destinationViewController.definitionMsg = "Abstraction Definition"
            }
            else
            {
                destinationViewController.titleMsg = "Binary System"
                destinationViewController.definitionMsg = "Binary System Definition"

            }

        }
    }
}
然后像这样设置按钮标签

AbstractionBtn.tag = 1
binarySystemBtn.tag = 2
现在像这样叫塞格

@IBAction func AbstractionBtn(sender: AnyObject) {
performSegueWithIdentifier("ShowDefinition", sender:sender)
}

您已在PerformsgueWithIdentifier中的sender参数中将定义作为字符串正确传递。您只需要在prepareForSegue中使用它的值,但首先必须从任何对象强制转换它?回到字符串

您的代码可能类似于:

class ViewController: UIViewController {
    @IBAction func AbstractionBtn(sender: AnyObject) {
        performSegueWithIdentifier("ShowDefinition", sender: "Abstraction")
    }

    @IBAction func binarySystemBtn(sender: AnyObject) {
        performSegueWithIdentifier("ShowDefinition", sender: "Binary System")
    }

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if (segue.identifier == "ShowDefinition") {
            if let destinationViewController = segue.destinationViewController as? EnglishViewController {
                if let definition = sender as? String {
                    if definition == "Abstraction" {
                        destinationViewController.titleMsg = "Abstraction"
                        destinationViewController.definitionMsg = "Abstraction Definition"
                    } else if definition == "Binary System" {
                        destinationViewController.titleMsg = "Binary System"
                        destinationViewController.definitionMsg = "Binary System Definition"
                    }
                }
            }
        }
    }
}

在prepareForSegue方法中,你最想做的是什么?我想当按下vc1中的“抽象按钮”时,显示抽象的标题和定义,当按下“二进制按钮”时,显示其标题和定义,我在字典中工作。你好,我应该将Abstractionbtn.tag=1和binarySystemBtn.tag=2放在哪里?您可以在viewDidLoad方法中编写,也可以直接在脚本中提供类似UIButton的“tag”属性