2016-09-20 47 views
0

我在嘗試使用redSlider.value爲另一個文件中的「Color」類型的屬性設置值時收到錯誤,指示「EXC_BAD_INSTRUCTION ...」 (下面還貼)UISlider值無法通過ViewController中的函數訪問

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

是否所有的滑塊IBOutlets連接?你能在界面生成器中發佈你的VC的圖像嗎? – Aerows

+1

從哪裏調用updateCurrentColor()? – Adarkas2302

+0

您是否在某處創建了第二個'ViewController'並嘗試在不加載其視圖的情況下訪問其網點? –

回答

0

ViewController()創建一個新的視圖控制器對象。由於您沒有在屏幕上顯示它,所以它的網點從未被初始化。這意味着redSlider: UISlider!末尾的!是個謊言。

即使它沒有崩潰,更新你沒有放在屏幕上的東西的顏色聽起來不是很有用。

使用您已有的ViewController而不是創建一個新的。