2016-09-20 6 views
0

redSlider.valueを使用して別のファイルの "Color"タイプのプロパティの値を設定しようとすると "EXC_BAD_INSTRUCTION ..."というエラーが表示されます。ViewControllerの関数でUISliderの値にアクセスできません

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!!!") 
    } 
} 

を(以下も貼り付けられた)そして、ここで(別のファイルで)私の "カラー" タイプです:

import Foundation 

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

Here is my ViewController

私はupdateCurrentColor(コール)からmain.swift

import Foundation 
import UIKit 

ViewController().updateCurrentColor() 
+0

すべてのスライダIBOutletは接続されていますか? VCのイメージをInterface Builderに投稿できますか? – Aerows

+1

どこからupdateCurrentColor()を呼び出しますか? – Adarkas2302

+0

2番目の 'ViewController'をどこかに作成し、ビューをロードせずにコンセントにアクセスしようとしていますか? –

答えて

0

ViewController()は、新しいView Controllerオブジェクトを作成します。あなたは画面にそれを表示しないので、アウトレットは決して初期化されません。つまり、redSlider: UISlider!の末尾の!は嘘です。

クラッシュしていなくても、画面に表示していないものの色を更新しても大変便利です。

新しいものを作成する代わりに、既に持っているViewControllerを使用してください。

関連する問題