我有以下代码创建并向视图添加滑块和标签。只要我移动滑块,它会在AppDelegate类中提供一个SIGABRT并进入一个无限循环。我不明白我在做什么错误(如果我只添加它工作正常滑块)UISlider和UILabel导致无限循环
class test: UIView {
var value: Float
override func drawRect(rect: CGRect) {
self.addSubview(getSlider())
self.addSubview(getLabel())
}
override init(frame: CGRect) {
value = 0.9
super.init(frame:frame)
}
func getSlider()-> UISlider {
let slider: UISlider = UISlider(frame: CGRectMake(10,10,self.frame.width,30))
slider.addTarget(self, action:"change", forControlEvents:UIControlEvents.ValueChanged)
return slider
}
func getLabel()-> UILabel {
let label = UILabel(frame: CGRectMake(10,50,50,50))
label.text = "\(value)"
return label
}
func change(sender: UISlider) {
value = sender.value
}
在'-drawRect:'方法内调用'-addSubview:'不是最好的主意;您应该将这些行放入视图生命周期中的不同位置,例如到'-didMoveToSuperview'或'-willMoveToSuperview:'(或者他们的Swift等价物,当然)。 – holex