我正在尝试使用tapGesture为UIImageView
命名rDot
。当点击图像视图rDot
时,我希望在另一个名为 wCircle 的viewController上使用不同的UIImageView
变为红色。问题是代码运行,但是当我点按rDot
时,其他图片wCircle
不会变为红色。
override func viewDidLoad() {
super.viewDidLoad()
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(imageTapped(tapGestureRecognizer:)))
rDot.isUserInteractionEnabled = true
rDot.addGestureRecognizer(tapGestureRecognizer)
}
func imageTapped(tapGestureRecognizer: UITapGestureRecognizer)
{
let wCircle = UIImageView(image: UIImage(named:"wCircle")?.withRenderingMode(.alwaysTemplate)) //error here
wCircle.tintColor = UIColor.red
}
答案 0 :(得分:1)
在Swift代码的上下文中,EXC_BAD_INSTRUCTION通常意味着您遇到了编译器陷阱,即由于在运行时检测到错误而被编译器插入到代码中的未定义指令。其中最常见的原因是:
无法打开可选项 - 这可以是强制解包(!)或隐式解包(访问隐式解包的可选项,即nil)。
数组越界
失败的强制转换(为!),因为该值为nil可选或因为该值类型错误。
检查wCircle是否为零。 检查插座是否正确连接。
答案 1 :(得分:0)
确保您的图片素材的图片名称为" wCircle"区分大小写 , 再次,在不在项目包中的资产中,我认为UIImageView无法初始化,因为带有" wCircle"资产中不存在
答案 2 :(得分:0)
初始化UITapGestureRecognizer的方式不正确。 尝试
UITapGestureRecognizer(target: self, action: #selector(ViewController.imageTapped(tapGestureRecognizer:)))
将ViewController
替换为您的控制器的班级名称
答案 3 :(得分:0)
确保您的对象wCircle存在并成功初始化
答案 4 :(得分:0)
什么是" wCircle" ? UIImage没有名为tintColor
的属性,如果你想改变图像的颜色改变他的容器UIImageView&t tintColor