我有一個基於視圖的NSTableView,每行有一個NSTrackerArea。 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工程。我也試圖爲每一行創建跟蹤器,而不是直接在單元格中執行,但我沒有能力將其脫落。
你有什麼想法嗎?並提前致謝!