2017-04-10 57 views
0

我是swift的新手,我想用UIButton制作切换/切换功能。用UIButton以编程方式快速切换功能

我试过多种方法,我找不到解决方案。

请帮我解决这个问题。

这里是我的代码(这些按钮在viewDidLoad方法中声明):

let switchLightBT = UIButton() 
switchLightBT.frame = (frame: CGRect(x: 1, y: 220, width: 102, height: 102)) 
switchLightBT.backgroundColor = .clear 
switchLightBT.tag = 1 
switchLightBT.setImage(#imageLiteral(resourceName: "dark-icon"), for: .normal) 
switchLightBT.addTarget(self, action: #selector(darkTheme(sender:)), for: .touchUpInside) 
self.view.addSubview(switchLightBT) 

let switchDarkBT = UIButton() 
switchDarkBT.frame = (frame: CGRect(x: 1, y: 220, width: 102, height: 102)) 
switchDarkBT.backgroundColor = .clear 
switchDarkBT.tag = 2 
switchDarkBT.setImage(#imageLiteral(resourceName: "light-icon"), for: .normal) 
switchDarkBT.addTarget(self, action: #selector(lightTheme(sender:)), for: .touchUpInside) 

self.view.addSubview(switchDarkBT) 

和行动:

func darkTheme(sender: UIButton!){ 
     self.view.backgroundColor = .black 
sender.isHidden = true 
     for button in self.wbButtons { 
      button.setTitleColor(UIColor .white, for: .normal) 
     } 
    } 

    func lightTheme(sender: UIButton!){ 
     self.view.backgroundColor = .white 
sender.isHidden = true 
     for button in self.wbButtons { 
      button.setTitleColor(UIColor .black, for: .normal) 
     } 
    } 

只是一个预览,如果没有这个代码(在viewDidLoad方法声明),我想工作很好,但一次,我想这个工作一直。

if switchDarkBT.isSelected == false { 
    switchDarkBT.isHidden = false 
    switchLightBT.isHidden = true 
} else { 
    switchDarkBT.isHidden = true 
    switchLightBT.isHidden = false 

} 
+0

什么是'self.wbButtons' –

+0

这是多个按钮的出口集合。 – GilbertOOl

+0

点击按钮后你想要什么? –

回答

1

试试这个

class ViewController: UIViewController { 
let switchLightBT = UIButton() 
let switchDarkBT = UIButton() 

override func viewDidLoad() { 
super.viewDidLoad() 
switchLightBT.frame = (frame: CGRect(x: 1, y: 220, width: 102, height: 102)) 
switchLightBT.backgroundColor = .clear 
switchLightBT.tag = 1 
switchLightBT.setImage(UIImage(named:"light"), for: .normal) 
switchLightBT.addTarget(self, action: #selector(darkTheme(sender:)), for: .touchUpInside) 
self.view.addSubview(switchLightBT) 

switchDarkBT.frame = (frame: CGRect(x: 1, y: 220, width: 102, height: 102)) 
switchDarkBT.backgroundColor = .clear 
switchDarkBT.tag = 2 
switchLightBT.setImage(UIImage(named:"dark"), for: .normal) 
switchDarkBT.addTarget(self, action: #selector(lightTheme(sender:)), for: .touchUpInside) 

self.view.addSubview(switchDarkBT) 

} 

func darkTheme(sender: UIButton!){ 
self.view.backgroundColor = .black 
switchLightBT.isHidden = true 
switchDarkBT.isHidden = false 

} 

func lightTheme(sender: UIButton!){ 
self.view.backgroundColor = .white 
switchLightBT.isHidden = false 
switchDarkBT.isHidden = true 

} 
+0

是的,但第一个动作后(第一touchUpInside) ,所有按钮消失!我需要切换按钮 - 如果“switchDarkBT”隐藏,显示“switchLightBT”,反之亦然! – GilbertOOl

+0

你在哪里创建了这两个按钮?在viewDidLoad中? –

+0

您是否在self.wbButtons中添加了这两个按钮? –

1

您可以将switchLightBT和switchDarkBT声明为实例变量,并将这些行添加到您的按钮函数中。

func darkTheme(sender: UIButton!){ 
     switchDarkBT.isHidden = true 
     switchLightBT.isHidden = false 
     self.view.backgroundColor = .black 
     for button in self.wbButtons { 
      button.setTitleColor(UIColor .white, for: .normal) 
     } 
    } 

func lightTheme(sender: UIButton!){ 
     switchLightBT.isHidden = true 
     switchDarkBT.isHidden = false 
     self.view.backgroundColor = .white 
     for button in self.wbButtons { 
      button.setTitleColor(UIColor .black, for: .normal) 
     } 
     } 
+0

像这样: VAR switchDarkBT =布尔() VAR switchLightBT =布尔() – GilbertOOl

+0

哎呀对不起,像这样:var switchDarkBT =的UIButton() VAR switchLightBT =的UIButton() – GilbertOOl