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