UISlider值无法通过ViewController中的函数访问

问题描述:

我在尝试使用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'并尝试在不加载其视图的情况下访问其网点? –

ViewController()创建一个新的视图控制器对象。由于您没有在屏幕上显示它,所以它的网点从未被初始化。这意味着redSlider: UISlider!末尾的!是个谎言。

即使它没有崩溃,更新你没有放在屏幕上的东西的颜色听起来不是很有用。

使用您已有的ViewController而不是创建一个新的。