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()
}
我打电话updateCurrentColor()从main.swift
import Foundation
import UIKit
ViewController().updateCurrentColor()
答
ViewController()
创建一个新的视图控制器对象。由于您没有在屏幕上显示它,所以它的网点从未被初始化。这意味着redSlider: UISlider!
末尾的!
是个谎言。
即使它没有崩溃,更新你没有放在屏幕上的东西的颜色听起来不是很有用。
使用您已有的ViewController
而不是创建一个新的。
是否所有的滑块IBOutlets连接?你能在界面生成器中发布你的VC的图像吗? – Aerows
从哪里调用updateCurrentColor()? – Adarkas2302
您是否在某处创建了第二个'ViewController'并尝试在不加载其视图的情况下访问其网点? –