У меня есть NSTableView, который периодически прекращает анимировать и обновлять себя правильно, что приводит к ужасному пользователю.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()
}
Там, кажется, нет никакой логики, когда она останавливается анимировать, и во многих тестах я сделал это чувствует себя почти как это строить связаны. Интересно, что он никогда не прекращает анимацию, когда я профилирую ...
Это как если бы что-то в основном потоке забивало пользовательский интерфейс, а затем NSTableView время и отменяет обновление, но я не знаю, как я могу отлаживать этот ,
Я думаю, все, что вы можете сделать, это убедиться, что все выше код выполняется в главном потоке (оберните его в 'dispatch_async (dispatch_get_main_queue(), {...}') и попробуйте выполнить диспетчерскую работу, которая может блокироваться фоновым потоком, и посмотреть, улучшится ли она. Возможно, некоторые разумно размещенные логические операторы помогут вам обеспечить, чтобы этот код вызывался –
Этот вопрос не содержит достаточной информации для воспроизведения проблемы. См. [mcve] – jtbandes
Не могли бы вы приложить пример проекта, который воспроизводит проблему? – JAL