2017-04-10 40 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