Ich brauche eine Möglichkeit, UIPageViewController Controller wiederverwenden, um Speicher zu sparen, da ich eine große Anzahl von Seiten zu zeigen haben! Ich habe die grundlegende Implementierung des UIPageViewController, konnte aber nicht Controller wiederverwendbar machen, bitte Beratung!wie UIPageViewController Controller wie TableView Wiederverwendungszelle wiederverwenden?
Antwort
Sie könnten ACReuseQueue verwenden, um zu erreichen, was Sie wollen. Es bietet eine Warteschlange für die Wiederverwendung Ihrer View-Controller. Sie können die Datenquellenmethoden UIPageViewController verwenden, um einen VC aus der Wiederverwendungswarteschlange zu entfernen. Der schwierige Teil besteht darin, zu wissen, wann sie wieder in die Wiederverwendungswarteschlange gestellt werden sollen. UIPageViewController bietet keine Methode, um zu wissen, wenn dies geschieht, aber es gibt einen Weg. UIPageViewController ist eine Container-VC, die ihre untergeordneten Ansichtscontroller mithilfe der VC-Containment-APIs hinzufügt und entfernt. Ihr VC erhält didMoveToParentViewController: mit nil als Argument, wenn es aus dem UIPageViewController entfernt wird. Verwenden Sie diese Methode, um sich selbst zur Warteschlange hinzuzufügen.
Um dieses Problem in meinem aktuellen Projekt zu lösen, zwischenspeichern ich alle View-Controller, die als Seiten für die UIPageViewController
in einem Set
erstellt werden. Immer wenn der UIPageViewController
einen neuen View-Controller von seiner Datenquelle anfordert, filtere ich einen unbenutzten Cache aus diesem Cache, indem ich die parentViewController
-Eigenschaft überprüfe; Wenn kein nicht verwendeter View-Controller verfügbar ist, wird ein neuer View-Controller erstellt.
Mein Setup des UIPageViewController
und der Cache zu diesem recht ähnlich sieht:
class MyPageViewController: UIPageViewController {
private var reusableViewControllers = Set<MyViewController>()
init() {
super.init(/* ... */)
self.dataSource = self
let initialViewController = self.unusedViewController()
// Configure the initial view controller
// ...
self.setViewControllers([ initialViewController ],
direction: .Forward,
animated: false,
completion: nil)
}
// This function returns an unused view controller from the cache
// or creates and returns a new one
private func unusedViewController() -> MyViewController {
let unusedViewControllers = reusableViewControllers.filter { $0.parentViewController == nil }
if let someUnusedViewController = unusedViewControllers.last {
return someUnusedViewController
} else {
let newViewController = MyViewController()
reusableViewControllers.insert(newViewController)
return newViewController
}
}
}
Die Datenquelle verwendet die gleiche Funktion einen nicht verwendeten View-Controller zu erhalten:
extension MyPageViewController: UIPageViewControllerDataSource {
func pageViewController(pageViewController: UIPageViewController,
viewControllerAfterViewController viewController: UIViewController) -> UIViewController? {
let nextViewController = unusedViewController()
// Configure the next view controller for display
// ...
return nextViewController
}
}
- 1. wie zwei View-Controller in UIPageViewcontroller
- 2. TableView Controller -Swift
- 3. storyboard navigation controller ohne tableview controller
- 4. Rotation von UIPageViewController in Container View Controller
- 5. Eckig: Wie Service über verschiedene Controller und Modul wiederverwenden
- 6. Wie StringBuilder Obj wiederverwenden?
- 7. wie android alertdialog wiederverwenden
- 8. Wie Tableview von einem anderen View-Controller in schnellen
- 9. wie UIPageViewController Seite Steuerelement Hintergrundfarbe festlegen
- 10. UIPageViewController Speicherleck
- 11. Übergeben Sie NSInteger an einen TableView-Controller
- 12. Disable UIPageViewController Swipe - Swift
- 13. Wie kann ich InputStreams wiederverwenden?
- 14. Wie kann ich HttpUrlConnection wiederverwenden?
- 15. uipageviewcontroller class crashing auf Einstellung mehr als eine Ansicht Controller
- 16. wie in uipageviewcontroller zu vergrößern oder verkleinern?
- 17. UIPageViewController nicht die Größe seiner untergeordneten Ansicht Controller
- 18. UIPageViewController innerhalb Navigation
- 19. Disable UIPageViewController Bouncing - Swift
- 20. Assertionsfehler in UIPageViewController
- 21. wie man uipageviewcontroller in Kreisen machen
- 22. Wie deaktiviert man Multi-Touch auf UIPageViewController?
- 23. Wie lösche ich Seiten in UIPageViewController?
- 24. UIPageViewController: Child Controller ignorieren Statusleiste Höhe beim Scrollen
- 25. wo zwischenspeichert UIPageViewController die vorherigen und nächsten Controller?
- 26. UIPageViewController schlechter Zugriffsfehler
- 27. javafx wie benutzerdefinierte Komponente in verschiedenen FXML wiederverwenden
- 28. UIPageViewController Swipe programmatisch
- 29. Wie verwende ich TableView im Viewcontroller?
- 30. Wie werden Schaltflächen in der Navigationsleiste in UIPageViewController angezeigt?
Das ist Magie Frage :) und brauche diese Lösung wirklich ... –