Ios 如何根据单击的按钮设置标题。发送数据

Ios 如何根据单击的按钮设置标题。发送数据,ios,swift,uibutton,Ios,Swift,Uibutton,我一直在寻找我的答案,但一切似乎都有点混乱,因此我决定尝试问以下问题: 我在第一视图中有三个按钮 红色、蓝色和白色 在第一个视图中还有一个隐藏标签,它会根据单击的按钮而变化(当单击按钮时,它会显示文本“红色/蓝色/白色按钮已选中”) 此外,当触摸一个按钮时,会出现一个新按钮,并显示一个文本“next screen”(下一屏幕),将一个序列推到另一个标题中带有标签的视图 问题是:如何根据我们在第一个VC中点击的按钮在新视图中设置标题 我的意思是,如果我们点击了红色按钮,标题会是:“我们点击了红色按

我一直在寻找我的答案,但一切似乎都有点混乱,因此我决定尝试问以下问题:

我在第一视图中有三个按钮

红色、蓝色和白色

在第一个视图中还有一个隐藏标签,它会根据单击的按钮而变化(当单击按钮时,它会显示文本“红色/蓝色/白色按钮已选中”)

此外,当触摸一个按钮时,会出现一个新按钮,并显示一个文本“next screen”(下一屏幕),将一个序列推到另一个标题中带有标签的视图

问题是:如何根据我们在第一个VC中点击的按钮在新视图中设置标题

我的意思是,如果我们点击了红色按钮,标题会是:“我们点击了红色按钮”。等

代码:

@IBOutlet weak var labelTipo: UILabel!
@IBOutlet weak var siguiente: UIButton!

var redSel = String()
var BlueSel = String()
var whiteSel = String()

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    siguiente.hidden = true

    redSel = labelTipo.text!
    BlueSel = labelTipo.text!
    whiteSel = labelTipo.text!
}

@IBAction func redButton(sender: AnyObject) {
    siguiente.hidden = false

    labelTipo.text = "Has elegido un regalo de cumpleaños"
}

@IBAction func blueButton(sender: AnyObject) {
     siguiente.hidden = false

    labelTipo.text = "Has elegido un regalo de aniversario"
}

@IBAction func whiteButton(sender: AnyObject) {
     siguiente.hidden = false

    labelTipo.text = "Has elegido un regalo casual"
}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if(segue.identifier == "detailViewController") {
        print("Colour is")

        let vc = segue.destinationViewController as! detailViewController

        vc.blueSel = BlueSel
        vc.redSel = redSel
        vc.whiteSel = whiteSel
    }
}
}

class ViewController: UIViewController {

var redSel = String()
var blueSel = String()
var whiteSel = String()

@IBOutlet weak var titleLabel: UILabel!

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.

    titleLabel.text = ""
}

这很简单,请在单击按钮时创建一个局部变量来分配字符串。并将此变量传递给另一个viewController,您将其推送到该位置。在您的情况下,将“labelTipo.text”的值分配给一个新变量,并将其传递给另一个viewController

// Your SourceViewController

@IBOutlet weak var labelTipo: UILabel!
@IBOutlet weak var siguiente: UIButton!

    var passThisValue = String()

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    siguiente.hidden = true

}

@IBAction func redButton(sender: AnyObject) {
    siguiente.hidden = false

    labelTipo.text = "Has elegido un regalo de cumpleaños"
    self.passThisValue = labelTipo.text 

}

@IBAction func blueButton(sender: AnyObject) {
     siguiente.hidden = false

    labelTipo.text = "Has elegido un regalo de aniversario"
    self.passThisValue = labelTipo.text 

}

@IBAction func whiteButton(sender: AnyObject) {
     siguiente.hidden = false

    labelTipo.text = "Has elegido un regalo casual"

    self.passThisValue = labelTipo.text 
}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if(segue.identifier == "AnotherViewController") {

        let vc = segue.destinationViewController as! AnotherViewController

        vc.valueFromSourceViewController = self.passThisValue
    }
}
}

// Your AnotherViewController 

class AnotherViewController: UIViewController {

var valueFromSourceViewController = String()

@IBOutlet weak var titleLabel: UILabel!

override func viewDidLoad() {
    super.viewDidLoad()

    titleLabel.text = self.valueFromSourceViewController
}

尝试在prepareForSegue方法中添加一些内容,但将labelTipo变量作为类的属性:

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if(segue.identifier == "detailViewController") {
            print("Colour is")

            let vc = segue.destinationViewController as! detailViewController

            vc.blueSel = BlueSel
            vc.redSel = redSel
            vc.whiteSel = whiteSel
//make some newLocalVariable property in vc! 
            vc.newLocalVariable = self.labelTipo.text
        }
    }

因此,实际上,您将“vc”新值的局部变量“newLocalVariable”保存在其中,该值等于labelTipo.text,例如,或您想要的任何值。

您只需稍加修改,即可更简洁地完成此操作。下面是一个完整的示例,您可以从

如果为选择类型设置枚举,则可以在设置值时配置UI

这是完整的主视图控制器

import UIKit

class ViewController: UIViewController {

    enum Selection: String {
        case NoSelection = ""
        case RedButton = "Has elegido un regalo de cumpleaños"
        case BlueButton = "Has elegido un regalo de aniversario"
        case WhiteButton = "Has elegido un regalo casual"
    }

    @IBOutlet var colorLabel: UILabel!
    @IBOutlet var nextButton: UIButton!

    var selection: Selection = .NoSelection {
        didSet {
            colorLabel.text = selection.rawValue
            if selection == .NoSelection {
                nextButton.hidden = true
            } else {
                nextButton.hidden = false
            }
        }
    }


    override func viewDidLoad() {
        super.viewDidLoad()
        colorLabel.text = selection.rawValue
        nextButton.hidden = true
    }

    @IBAction func onRed(sender: UIButton) {
        selection = .RedButton
    }

    @IBAction func onBlue(sender: UIButton) {
        selection = .BlueButton
    }

    @IBAction func onWhite(sender: UIButton) {
        selection = .WhiteButton
    }


    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        guard
            segue.identifier == "ShowDetail",
            let destinationVC = segue.destinationViewController as? DetailViewController
            else { return }

        destinationVC.displayText = selection.rawValue
    }
}
在序列中,将字符串传递给目标视图控制器:

import UIKit

class DetailViewController: UIViewController {

    @IBOutlet var label: UILabel!

    var displayText: String = ""


    override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)
        label.text = displayText
    }

}

这是更少的代码和更优雅一点IMHO。通过设置选择来配置UI,您不必在每个函数中手动设置按钮的
隐藏变量。

根据单击的按钮存储值。在segue中,查询此参数并将其传递给显示的视图控制器。@factor由于您可以在stack overflow中随时向您提问,很多人都在这里帮助您解决问题。我很乐意提供帮助)您能做到吗+1)