我有以下代碼創建並向視圖添加滑塊和標籤。只要我移動滑塊,它會在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