2016-09-20 2 views
0

Ich bekomme eine Fehlermeldung "EXC_BAD_INSTRUCTION ..." in Bezug auf die Verwendung von redSlider.value, um einen Wert für eine Eigenschaft meines "Color" -Typ aus einer anderen Datei zu setzen .UISlider Wert kann nicht von Funktion in ViewController zugegriffen werden

import UIKit 

class ViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 

    @IBOutlet weak var colorView: UIView! 
    @IBOutlet weak var redSlider: UISlider! 
    @IBOutlet weak var greenSlider: UISlider! 
    @IBOutlet weak var blueSlider: UISlider! 

    func updateCurrentColor() { 
     var currentColor = Color(red: redSlider.value, green: greenSlider.value, blue: blueSlider.value) 
     print("CurrentColor updated!!!") 
    } 
} 

(auch klebte unten) Und hier ist mein "Color" Art (in einer anderen Datei):

import Foundation 

struct Color { 
    var red = Float() 
    var green = Float() 
    var blue = Float() 
} 

Here is my ViewController

ich nenne updateCurrentColor() aus main.swift

import Foundation 
import UIKit 

ViewController().updateCurrentColor() 
+0

Sind alle Schieberegler IBOutlets verbunden? Können Sie in Interface Builder ein Image Ihres VCs posten? – Aerows

+1

Woher rufen Sie updateCurrentColor()? – Adarkas2302

+0

Erstellen Sie einen zweiten 'ViewController' irgendwo und versuchen Sie, auf seine Ausgänge zuzugreifen, ohne seine Ansichten zu laden? –

Antwort

0

ViewController() erstellt ein neues View-Controller-Objekt. Da Sie es nicht auf dem Bildschirm präsentieren, werden seine Ausgänge nie initialisiert. Das bedeutet, dass die ! am Ende redSlider: UISlider! eine Lüge ist.

Auch wenn es nicht zum Absturz kam, klingt das Aktualisieren der Farbe auf etwas, das Sie nicht auf den Bildschirm setzen, nicht sehr nützlich.

Verwenden Sie die bereits vorhandene ViewController, anstatt eine neue zu erstellen.

Verwandte Themen