Ich bin nicht wirklich sicher, warum das langsam läuft. Manchmal kann ich auf die Reihe tippen und es öffnet sich sofort das Popup. Manchmal kann ich auf die Reihe tippen und es dauert 2-3 Sekunden, um zu laden. Es scheint fast so, als wäre der Code verwirrt, wenn man die Zelle bekommt.Swift Presenting Popover von UITableView läuft sehr langsam
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let selectedItem = self.filteredTransactions[indexPath.row]
if let cell = tableView.cellForRowAtIndexPath(indexPath) as? BudgetHomeCell {
if let addTXView = self.storyboard?.instantiateViewControllerWithIdentifier("BHAddTXVC") as? BHAddTXVC {
addTXView.modalPresentationStyle = .Popover
addTXView.preferredContentSize = CGSizeMake(200, 200)
let popover = addTXView.popoverPresentationController
popover?.permittedArrowDirections = .Any
popover?.delegate = self
popover?.sourceView = cell.valueLabel
popover?.sourceRect = cell.valueLabel.bounds
addTXView.selectedTX = selectedItem
self.presentViewController(addTXView, animated: true, completion: nil)
}
}
}
Alle Vorschläge für eine bessere Leistung bei der Präsentation der Popover von der Wertelabel in der Tabellenansicht Zelle? Während des Tippens habe ich den Debug-Navigator überprüft und es gibt keine CPU- oder Speicherspitzen. Dies geschieht sowohl für ein simuliertes iPad als auch für ein iPad Air 2. Ich habe eine Wischgeste ausgeführt, die es abwarf. Ich habe das entfernt und das Popup ist immer noch sehr langsam in einigen Fällen.
Hier ist eine wilde und verrückte Vermutung: wickle das gesamte Innere deines 'didSelectRowAtIndexPath' in einen' delay' Block (für meine 'delay' Funktion, siehe http://Stackoverflow.com/a/24318861/341994). Es kann eine "Verzögerung" von "0" oder "0,1" sein. Sehen Sie, ob das einen Unterschied macht. Wenn es nicht hilft, okay, wir haben versagt, nimm es wieder raus. – matt
wie @matt vorgeschlagen, können Sie versuchen, den Code explizit auf dem Hauptthread auszuführen. –
Sollte das erkannt haben, denke ich, ich habe mich wirklich gefragt, ob es etwas mit dem Code gab, der es langsam verarbeiten ließ, dass ich es falsch machte. Die Verwendung von Matts Vorschlag funktioniert. – matthew