Grundsätzlich mag ich alle Objekte aus einem UIScrollView entfernen, und ich habe noch keine Lösung gefunden, weil ein einfaches „removeAllObjects“ Befehl funktioniert nicht. Hat jemand eine Idee, wie es geht?iPhone: Wie alle Objekte aus einem UIScrollView entfernen
Antwort
Noch einfacher:
[[scrollView subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
Ich vermute, Sie das gleiche Problem mit 'makeObjectsPerformSelector' in Bezug auf sie haben Looping durch die Subviews zu entfernen, während das Array gleichzeitig ändern. Dieser Weg ist elegant und wird von vielen benutzt, aber wie adressieren Sie das oben vorgestellte Programm? – iwasrobbed
Ich bin ziemlich sicher makeObjectsPerformSelector: generiert ein temporäres Array vor dem Aufruf der Selektor für jedes Objekt. Wenn es nicht so wäre, wie du sagst, würde es Probleme verursachen. – Kalle
Der einfachste Weg:
for(UIView *subview in [scrollView subviews]) {
[subview removeFromSuperview];
}
Ist es sicher, den Array-Inhalt zu ändern, während Sie durch die Elemente durchlaufen? Ich frage mich nur ... – progrmr
Im Allgemeinen ist es wahrscheinlich nicht die beste Vorgehensweise, also sollten Sie ein temporäres Array einrichten, das zum Entfernen markiert ist. : P – iwasrobbed
Es ist auf jeden Fall sicher Subviews während Aufzählen Eltern Subviews Sammlung – ohhorob
Zwei Lösungen wäre, ohne die Bildlaufleisten zu entfernen:
einen Tag alle Ihre Subviews hinzufügen, entfernen Sie diese mit diesen Tags.
Umsetzung:
Dieses über Ihre Klasse
#define XPScrollViewSubviewStartTag 100
Wenn fügen Sie die Objekte
for(NSInteger = 0;i<[viewArray count];i++){
UIView* view = [viewArray objectAtIndex:i];
view.tag = XPScrollViewSubviewStartTag + i;
[scrollView addSubview:view];
}
Wenn Sie später die Ansichten
verwenden löschen möchtenfor(UIView* view in [scrollView subviews]){
if(view.tag >= XPScrollViewSubviewStartTag)
[view removeFromSuperview];
}
Erstellen eine benutzerdefinierte UIView Klasse
Wenn Sie die Ansichten
for(id view in [scrollView subviews]){
if(![view isKindOfClass:[CustomView class]])
continue;
//not necessary, but just to make things understandable
CustomView* customView = (CustomView*)view;
[customView removeFromSuperview];
}
Oritm Lösung entfernen wollen, ist schön, aber wenn Sie wollen Tags nicht stören, können Sie manuell entfernen, welche Ansichten Sie entfernen möchten der Bildlauf Dies setzt voraus, dass Sie wissen, welche Ansicht entfernt werden soll. Zum Beispiel meine Scroll hat nur UILabels so, wenn ich folgendes ausgeführt:
// This will remove the scrollview but the scrollbars will remain
for (UIView *subview in [self.detailsExpander.scrollView subviews]) {
if ([NSStringFromClass([subview class]) isEqualToString:@"UILabel"])
[subview removeFromSuperview];
}
Dadurch werden alle Etiketten nur entfernen, sondern die Bildlaufleisten halten (die Bildansichten sind). Hinweis: Dies funktioniert nicht, wenn Sie bestimmte Bildansichten beibehalten und gleichzeitig die Bildlaufleisten beibehalten möchten.
- 1. Wie alle Objekte aus einem NSMutableArray entfernen?
- 2. Entfernen Sie alle Objekte aus einer uiview?
- 3. Entfernen von Schaltflächen aus einem UIScrollView
- 4. entfernen alle Objekte aus NSMutable Array
- 5. Entfernen Sie alle Objekte aus einer UIView
- 6. wie alle Nicht-Charakter-Objekte aus Kennzeichenbild entfernen?
- 7. Grails: alle zugehörigen Objekte entfernen
- 8. UIScrollView lags auf iPhone
- 9. Powershell - Entfernen Sie alle Objekte in einem Registrierungselement
- 10. Wie unbenutzte Objekte aus einem Git-Repository entfernen?
- 11. So entfernen Sie alle Objekte aus den Core-Daten
- 12. Objekte aus Array Elasticsearch entfernen
- 13. iPhone UIScrollView Geschwindigkeitstest
- 14. Wie Streik Markierungen entfernen aus Importierte Objekte
- 15. Entfernen Sie ähnliche Objekte aus dem Array
- 16. UIScrollView in einem CALayer
- 17. Unteransichten von UIScrollView und Speicherleck entfernen
- 18. iPhone UIScrollView - wie man einen Bildtitel bekommt
- 19. Wie alle Zeilen aus einem data.frame in r zu entfernen
- 20. Python Objekte aus der Liste entfernen
- 21. ServiceStack Redis Client: Entfernen Sie alle Objekte
- 22. Objekte/Daten aus dem Arbeitsbereich entfernen
- 23. Wie alle Polylinien entfernen aus einer Karte
- 24. Wie alle Emoji aus String entfernen - php
- 25. UIScrollView - Hinzufügen/Entfernen von Labels
- 26. Entfernen vieler Objekte aus Three.js Szene langsam
- 27. IPhone Anwendung entfernen aus dem Appstore?
- 28. iphone UIScrollView umgekehrte Reihenfolge Positionierung
- 29. Wie kann ich alle erstellten Objekte vom Bildschirm entfernen?
- 30. Entfernen Sie bestimmte Objekte aus einer Liste
Entfernen Sie nicht alle Unteransichten eines 'UISubview'. Die Scrollindikatoransichten sind Unteransichten. Sie werden diese auch entfernen. Ich empfehle, Ihre Inhaltsansichten in Ihrem eigenen Container UIView zu platzieren. (Halten Sie es als einen ivar für einfachen Zugriff während des Hinzufügens und Entfernens von ihm) – ohhorob