Swift 如何对UIButton的标题进行编码以在两个视图控制器之间进行更改?
这是我所拥有的,但它不起作用。我希望vc3上的BB按钮根据VC2上显示的图像更改标题Swift 如何对UIButton的标题进行编码以在两个视图控制器之间进行更改?,swift,uibutton,segue,viewcontroller,swift5,Swift,Uibutton,Segue,Viewcontroller,Swift5,这是我所拥有的,但它不起作用。我希望vc3上的BB按钮根据VC2上显示的图像更改标题 @IBAction func buttonPressed(_ sender: UIButton) { func prepare(for segue: UIStoryboardSegue, sender: Any?) { if imageDisplayed == UIImage(named: "sad") && segue.identifier == "goToActiv
@IBAction func buttonPressed(_ sender: UIButton) {
func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if imageDisplayed == UIImage(named: "sad") && segue.identifier == "goToActive"{
let vc3 = segue.destination as! ThirdViewController
vc3.buttonTitle.titleLabel?.text = "no"
}
else if imageDisplayed == UIImage(named: "happy") && segue.identifier == "goToActive" {
let vc3 = segue.destination as! ThirdViewController
vc3.buttonTitle.titleLabel?.text = "happy"
} }
在iAction中,调用performsgue
@IBAction func buttonPressed(_ sender: UIButton) {
performSegue(withIdentifier: "goToActive", sender: nil)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if imageDisplayed == UIImage(named: "sad") && segue.identifier == "goToActive"{
let vc3 = segue.destination as! ThirdViewController
vc3.buttonTitle.("no", for: .normal)
}
else if imageDisplayed == UIImage(named: "happy") && segue.identifier == "goToActive" {
let vc3 = segue.destination as! ThirdViewController
vc3.buttonTitle.("happy", for: .normal)
}
}
首先,在
ThirdViewController
中创建一个名为text
的属性,并在viewDidLoad()
中将其设置为buttonTitle的
标题
class ThirdViewController: UIViewController {
@IBOutlet weak var buttonTitle: UIButton!
var text: String?
override func viewDidLoad() {
super.viewDidLoad()
self.buttonTitle.setTitle(self.text, for: .normal)
}
}
这是因为,在调用viewDidLoad()
之前,不会设置IBOutlet。因此,访问vc2
中的按钮将导致运行时异常
接下来,您的SecondViewController
应该如下所示:
class SecondViewController: UIViewController {
@IBOutlet weak var imageView: UIImageView!
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let vc3 = segue.destination as? ThirdViewController {
var buttonTitle: String?
switch self.imageView.image {
case UIImage(named: "sad"): buttonTitle = "no"
case UIImage(named: "happy"): buttonTitle = "happy"
default: break
}
vc3.text = buttonTitle
}
}
}
在上述代码中
在prepare(for:sender:)
中,根据imageView的图像设置vc3
的文本
无需创建按下的按钮(:)
iAction
。所有这些都将在prepare(for:sender:)
自身中处理