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