App maken: ook jij kunt het leren!

 

de iOS Academie Forums

Forums - App-ontwikkeling - Swift en iOS: switch

Leendert Jan  Leendert Jan heeft nog geen Studiekaart. Klokje01 mrt 2015, 16:13
Avatar
Avatar
Berichten:22


Weet iemand waarom de labels in de eerste versie beide kleuren, en in de tweede versie (waarin ik hetzelfde bedoel maar dan aan de hand van een functie) slechts het eerste label kleurt ?

Eerste versie:

 

class ViewController: UIViewController {

    var winstA = 11

    var winstB = 18

    

    @IBOutlet weak var labelA: UILabel!

   @IBOutlet weak var labelB: UILabel!

 

    override func viewDidLoad() {

        super.viewDidLoad()

        // Do any additional setup after loading the view, typically from a nib.

        

        self.labelA.text = "(winstA)"

        self.labelB.text = "(winstB)"

        

        

        switch(self.winstA) {

        case 0...5:

            self.labelA.backgroundColor = UIColor.grayColor()

        case 6...10:

            self.labelA.backgroundColor = UIColor.redColor()

        case 11...15:

            self.labelA.backgroundColor = UIColor.orangeColor()

        case 16...20:

            self.labelA.backgroundColor = UIColor.yellowColor()

        case 21...25:

            self.labelA.backgroundColor = UIColor.greenColor()

            

        default:

            println("uh-oh")

        }

        

        

                switch(self.winstB) {

                case 0...5:

                    self.labelB.backgroundColor = UIColor.grayColor()

                case 6...10:

                    self.labelB.backgroundColor = UIColor.redColor()

                case 11...15:

                    self.labelB.backgroundColor = UIColor.orangeColor()

                case 16...20:

                    self.labelB.backgroundColor = UIColor.yellowColor()

                case 21...25:

                    self.labelB.backgroundColor = UIColor.greenColor()

                    

                default:

                    println("uh-oh")

                }

 

    }

    

}

Tweede versie:

class ViewController: UIViewController {

    var winstA = 11

    var winstB = 18

    

    @IBOutlet weak var labelA: UILabel!

    @IBOutlet weak var labelB: UILabel!

 

    override func viewDidLoad() {

        super.viewDidLoad()

        

        self.labelA.text = "(winstA)"

        self.labelB.text = "(winstB)"

        

    labelDisplay(self.labelA, winst: self.winstA)

    labelDisplay(self.labelB, winst: self.winstB)

    

    }

    

    

    func labelDisplay(label: UILabel, winst: Int) {

        

        var label: UILabel!

        

        switch(winst) {

        case 0...5:

            self.labelA.backgroundColor = UIColor.grayColor()

        case 6...10:

            self.labelA.backgroundColor = UIColor.redColor()

        case 11...15:

            self.labelA.backgroundColor = UIColor.orangeColor()

        case 16...20:

            self.labelA.backgroundColor = UIColor.yellowColor()

        case 21...25:

            self.labelA.backgroundColor = UIColor.greenColor()

            

        default:

            println("uh-oh")

 

        }

    }

 

}

 

Leendert Jan

Reageer


Admin Roelf  Klokje01 mrt 2015, 16:46
Avatar


Leendert Jan, vervang (in het tweede voorbeeld) de tekst " self.labelA" even door "label", haal de var label-declaratie in je functie weg en dan zou het al een stuk beter moeten gaan.

Je geeft het te veranderen label weliswaar door als argument, maar je vervangt het door een gelijknamige lokale variabele en doet er vervolgens niets mee ;)

Succes!

 

Reageer


Leendert Jan  Leendert Jan heeft nog geen Studiekaart. Klokje01 mrt 2015, 17:16
Avatar
Avatar
Berichten:22


Roelf, bedankt voor je snelle reaktie.

Ik vond je oplossing wel grappig. Zo stom van me. Al doende leert men :-). 

Ik heb het gelijk verandert maar nu krijg ik een melding van 

fatal error: unexpectedly found nil while unwrapping an Optional value

Hoe ik het ook bekijk, ik kan nu niet een oplossing ontdekken.

Hierbij de github download

https://github.com/ljvis/SwitchColourLabel

Reageer


Admin Roelf  Klokje01 mrt 2015, 17:19
Avatar


Heb je de var label! declaratie weggehaald, Leendert Jan?

Reageer


Leendert Jan  Leendert Jan heeft nog geen Studiekaart. Klokje01 mrt 2015, 17:28
Avatar
Avatar
Berichten:22


Nu wel. Thanks. Het werkt !

Reageer

Leuk! 1 persoon vindt vindt dit leuk.