CLDemo
CLDemo copied to clipboard
CLRecordVernierCaliperCell 滑動時候卡尺標籤數字沒有切換
版主你好,游標卡尺滑動時候數字沒有跟著更換。 我將 indexValueCallback 改寫到 setItem裡面處理。 其原因是因為self.item在還沒初始化之前他取不到值。所以原先block在guard語句之後就會返回。 後續的函數功能都不會執行。
我的理解是 -> indexValueCallback 不能寫在懶加載定義裡面。因為初始化的時候 自己的CellProtocol 協議還沒有值 self.item 會造成崩潰
所以進行了下面的修改 func setItem(_ item: CLRecordVernierCaliperItem, indexPath: IndexPath) { self.vernierCaliperView.indexValueCallback = {[weak self] (value) in
guard let weakSelf = self else { return } //item -> CLRecordVernierCaliperItem
weakSelf.item?.value = value.cgFloat
weakSelf.item?.valueChangeCallback?(value)
weakSelf.valueLabel.attributedText = weakSelf.attributedString(value, type: item.type)
}
//其餘代碼 }
您參考看看