Mam NSTableView, który z przerwami przestaje animować i aktualizować się poprawnie, co prowadzi do strasznego doświadczenia użytkownika.Niepodległa animacja NSTableView
let oldRows = filteredDocuments
let newRows = newFilteredDocuments
let diff = oldRows.diff(newRows)
filteredDocuments = newFilteredDocuments
if (diff.results.count > 0) {
let deletionIndexPaths = NSMutableIndexSet()
diff.deletions.forEach { deletionIndexPaths.addIndex($0.idx) }
let insertionIndexPaths = NSMutableIndexSet()
diff.insertions.forEach { insertionIndexPaths.addIndex($0.idx) }
self.tableView?.beginUpdates()
self.tableView?.removeRowsAtIndexes(deletionIndexPaths, withAnimation: NSTableViewAnimationOptions.EffectFade)
self.tableView?.insertRowsAtIndexes(insertionIndexPaths, withAnimation: NSTableViewAnimationOptions.SlideLeft)
self.tableView?.endUpdates()
}
Wydaje się, że brak logiki, gdy zatrzymuje animowanie, a także w wielu testach zrobiłem to czuje się prawie jak to zbudować powiązane. Co ciekawe, nigdy nie przestaje on animować, gdy profiluję ...
To tak, jakby coś w głównym wątku blokowało interfejs użytkownika, a następnie upłynął limit czasu NSTableView i anulowało aktualizację - ale nie mam pojęcia, jak mogę to debugować .
Chyba wszystko, co można zrobić, to upewnić się, że wszystkie wyżej kod jest uruchomiony w głównym wątku (zapakuj go w 'dispatch_async (dispatch_get_main_queue(), {...}') i spróbuj wysłać pracę, która może blokować wątek w tle i sprawdzić, czy się poprawi.Może jakieś sprytnie umieszczone instrukcje dziennika pomogą ci upewnićsię, że ten kod jest wywoływany we właściwym czasie Widoki tabel są trudne do debugowania –
To pytanie nie zawiera wystarczających informacji, aby odtworzyć problem Zobacz [mcve] – jtbandes
Czy możesz dołączyć przykładowy projekt, który odtwarza problem? – JAL