注意:此版本不使用以编程方式应用的约束,但可以达到预期的结果!
我的Main.storyboard File 看起来像这样:
说明:我有 3 个按钮插座和一个按钮操作。当您按下隐藏按钮 B 按钮时,Button C 消失,但 Button B 收到标题 Button C 及其操作,隐藏按钮 B 变为 显示按钮 B。按钮的操作是Apressed()、Bpressed() 和Cpressed()。您可以在其中添加自己的代码,我刚刚以backgroundColor() 为例。
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var buttonA: UIButton!
@IBOutlet weak var buttonB: UIButton!
@IBOutlet weak var buttonC: UIButton!
var i = 0
override func viewDidLoad() {
super.viewDidLoad()
buttonA.addTarget(self, action: #selector(ViewController.Apressed), for: UIControlEvents.touchUpInside)
buttonB.addTarget(self, action: #selector(ViewController.Bpressed), for: UIControlEvents.touchUpInside)
buttonC.addTarget(self, action: #selector(ViewController.Cpressed), for: UIControlEvents.touchUpInside)
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func hideB(_ sender: AnyObject) {
if i == 0{
buttonC.isHidden = true
buttonB.setTitle("Button C", for: .normal)
buttonB.removeTarget(self, action: #selector(ViewController.Bpressed), for: .touchUpInside)
buttonB.addTarget(self, action: #selector(ViewController.Cpressed), for: .touchUpInside)
i += 1
sender.setTitle("Show Button B", for: .normal)
}
else if i == 1{
buttonC.isHidden = false
buttonB.removeTarget(self, action: #selector(ViewController.Cpressed), for: .touchUpInside)
buttonB.addTarget(self, action: #selector(ViewController.Bpressed), for: UIControlEvents.touchUpInside)
buttonB.setTitle("Button B", for: .normal)
i = 0
sender.setTitle("Hide Button B", for: .normal)
}
}
func Apressed(){
self.view.backgroundColor = UIColor.red()
}
func Bpressed(){
self.view.backgroundColor = UIColor.green()
}
func Cpressed(){
self.view.backgroundColor = UIColor.yellow()
}
}
最终结果: