2017-02-09 2 views
0

Ich verwende Xcode 8 und Swift 3, und versuche, eine Schaltfläche zu erstellen, die Farben ändert, wenn ich darauf klicke.UIButton Bild in Swift ändert Farben nicht, auch nachdem eine Funktion erstellt wurde

Die Schaltfläche ist schwarz, sollte aber blau werden, wenn ich klicke. Der Knopf ist ein Bild von einem Sparschwein.

Ich ging voran und fügte ein Bild des schwarzen Schweins und des blauen Schweins, mit Namen money_off beziehungsweise money_on hinzu.

Ich bin gerade dabei, Code zu schreiben, um das schwarze Bild beim Klicken blau zu machen. Der Code selbst zeigt keine Fehler, aber die Simulation war nicht erfolgreich. Ein Klick auf das schwarze Sparschwein tut gar nichts.

Hat jemand eine Ahnung, was passieren könnte?

import UIKit 

class SecondViewController: UIViewController, UITextFieldDelegate { 

    @IBOutlet weak var label: UILabel! 
    let step: Float = 1 

    @IBOutlet weak var moneybutton: UIButton! 

    @IBOutlet var itemTextField: UITextField! 

    @IBAction func moneyClicked(_ sender: UIButton) { 
     if sender.currentImage === #imageLiteral(resourceName: "money_off"){ 
      sender.setImage(#imageLiteral(resourceName: "money_on"), for: .normal)} 
     else { 
      sender.setImage(#imageLiteral(resourceName: "money_off"), for: .normal) 
     } 
    } 
} 
+0

Versuchen Haben Sie mit Haltepunkten überprüft? –

Antwort

1

this-

class SecondViewController: UIViewController, UITextFieldDelegate { 
    @IBOutlet weak var moneybutton: UIButton! 

    func viewDidLoad() { 
    self.moneybutton.setImage(UIImage(named:"money_on"), for: .selected) 
    self.moneybutton.setImage(UIImage(named:"money_off"), for: .normal) 
    } 

    @IBAction func moneyClicked(_ sender: UIButton) { 
    self.moneybutton.isSelected = !self.moneybutton.isSelected 
    } 
} 
+0

vielen dank !! das hat perfekt funktioniert – pynewbee

+0

Ok toll ... dann akzeptiere es ... :) –

0

Sie besser sich nicht auf den Rückgabewert von rund #imageLiteral, sondern einen Zustand halten, wie moneyOff im Beispielcode unten.

(sorry, keine Xcode verfügbar, könnte so Code einige Syntaxfehler enthalten, aber Sie bekommen die Idee):

class SecondViewController: UIViewController, UITextFieldDelegate { 

    @IBOutlet weak var label: UILabel! 
    let step: Float = 1 
    var moneyOff = true 

    @IBOutlet weak var moneybutton: UIButton! 

    @IBOutlet var itemTextField: UITextField! 


    @IBAction func moneyClicked(_ sender: UIButton) { 
     if moneyOff { 
      sender.setImage(#imageLiteral(resourceName: "money_on"), for: .normal)} 
     else { 
      sender.setImage(#imageLiteral(resourceName: "money_off"), for: .normal) 
     } 
     moneyOff = !moneyOff // toggle state 
    } 
} 
0

Below-Code ist Arbeit für mich:

class ViewController: UIViewController { 

    @IBOutlet weak var moneybutton: UIButton! 
    func viewDidLoad() 
    { 
     moneybutton.setImage(UIImage(named:"money_on"), for: .selected) 
     moneybutton.setImage(UIImage(named:"money_off"), for: .normal) 
    } 

    @IBAction func moneyClicked(_ sender: UIButton) 
    { 
     if self.btn.isSelected 
     { 
     self.moneybutton.isSelected = false 
     } 
     else{ 
     self.moneybutton.isSelected = true 
    } 
} 
0

I Raten Problem ist Ihre Verbindung zwischen Storyboard und View-Controller.

Ich versuche, programmgesteuert Button hinzufügen und es funktioniert.

import UIKit 
import AVFoundation 

class ViewController: UIViewController { 

    lazy var btn: UIButton = { 
     let btn = UIButton() 
     btn.translatesAutoresizingMaskIntoConstraints = false 
     btn.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handleClicked))) 
     btn.isUserInteractionEnabled = true 
     btn.setImage(UIImage(named: "money_off"), for: .normal) 

     return btn 
    }() 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     view.backgroundColor = .green 

     view.addSubview(btn) 

     btn.topAnchor.constraint(equalTo: view.topAnchor, constant: 100).isActive = true 
     btn.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 50).isActive = true 
     btn.widthAnchor.constraint(equalToConstant: 50).isActive = true 
     btn.heightAnchor.constraint(equalToConstant: 10).isActive = true 

    } 

    func handleClicked() { 
     if btn.currentImage == UIImage(named: "money_off") { 
      btn.setImage(UIImage(named: "money_on"), for: .normal) 
     } else { 
      btn.setImage(UIImage(named: "money_off"), for: .normal) 
     } 
    } 
} 
Verwandte Themen