각 행에 NSTrackerArea가있는 뷰 기반 NSTableView가 있습니다. NSTableView에는 사용자 목록이 포함되어 있으며 사용자가 가입하고 나가면 업데이트됩니다. 이것은 내가 새 셀을 만드는 방법입니다.TableCellViews에서 이전 NSTrackingAreas를 처리/처리하는 방법은 무엇입니까?
let cell = tableView.make(withIdentifier: "username",
owner: self) as! NSTableCellView
let aera = NSTrackingArea.init(rect: cell.bounds, options [
NSTrackingAreaOptions.activeInKeyWindow,
NSTrackingAreaOptions.inVisibleRect,
NSTrackingAreaOptions.mouseEnteredAndExited],
owner: self, userInfo: nil)
cell.textField?.stringValue = name
cell.addTrackingArea(aera)
return cell
추적 영역은 작동하지만이 구현은 여러 영역의 추적 영역을 만듭니다.
예 : 대화방에는 10 명의 사용자가 있고 사용자 2는 퇴장합니다. 새로운 사용자가 조인하고 tableview에서 행을 가져옵니다. 하지만 이제이 ViewCell에는 서로 겹치는 두 개의 추적기가 있습니다. 이것은 몇 가지 문제를 만듭니다.
.reloadData()를 사용하면 모든 행에 대해 새 추적기가 만들어집니다. .updateTrackingAreas()를 사용하고 NSTableCellView를 하위 클래스 화하여 deinit에서 추적기를 제거하려고 시도했지만 niether가 작동합니다. 또한 셀에서 직접 수행하는 대신 각 행에 대한 추적기를 만들려고했지만 플래시를 가져올 기술이 없습니다.
의견이 있으십니까? 그리고 미리 감사드립니다!