Về cơ bản tôi muốn xóa tất cả các đối tượng khỏi UIScrollView và tôi chưa tìm thấy giải pháp cho nó vì lệnh "removeAllObjects" đơn giản không hoạt động. Có ai có ý tưởng làm thế nào để làm điều đó?iPhone: Cách xóa tất cả các đối tượng khỏi UIScrollView
Trả lời
Thậm chí dễ dàng hơn:
[[scrollView subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
Tôi đoán bạn có cùng vấn đề với 'makeObjectsPerformSelector' liên quan đến nó lặp qua các bản xem trước trong khi sửa đổi mảng đồng thời. cách này là thanh lịch và được sử dụng bởi nhiều người, nhưng làm thế nào để bạn giải quyết những gì progrmr đưa lên ở trên? – iwasrobbed
Tôi khá chắc chắn makeObjectsPerformSelector: tạo ra một mảng tạm thời trước khi gọi bộ chọn trên mỗi đối tượng. Nếu nó không, như bạn nói, nó sẽ gây ra vấn đề. – Kalle
Cách đơn giản nhất:
for(UIView *subview in [scrollView subviews]) {
[subview removeFromSuperview];
}
Có an toàn để sửa đổi các nội dung mảng trong khi looping thông qua các yếu tố? Tôi chỉ tự hỏi ... – progrmr
Nói chung nó có lẽ không phải là thực hành tốt nhất, vì vậy bạn có thể muốn thiết lập một mảng tạm thời được đánh dấu để loại bỏ. : P – iwasrobbed
Chắc chắn là an toàn để xóa các bản xem trước khi liệt kê bộ sưu tập phụ của phụ huynh – ohhorob
Hai giải pháp sẽ là, mà không cần tháo cuộn:
Thêm một thẻ để tất cả các subviews của bạn, loại bỏ chúng bằng cách sử dụng các thẻ đó.
Thực hiện:
Nơi này trên lớp học của bạn
#define XPScrollViewSubviewStartTag 100
Khi bạn thêm các đối tượng
for(NSInteger = 0;i<[viewArray count];i++){
UIView* view = [viewArray objectAtIndex:i];
view.tag = XPScrollViewSubviewStartTag + i;
[scrollView addSubview:view];
}
Khi sau đó bạn muốn xóa các quan điểm sử dụng
for(UIView* view in [scrollView subviews]){
if(view.tag >= XPScrollViewSubviewStartTag)
[view removeFromSuperview];
}
Tạo nên một phong tục UIView lớp
Khi bạn muốn loại bỏ các quan điểm
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];
}
giải pháp Oritm là tốt đẹp, nhưng nếu bạn không muốn làm phiền sử dụng các thẻ, bạn có thể loại bỏ chế độ xem bạn muốn loại bỏ từ scrollview. Điều này sẽ giả định rằng bạn biết chế độ xem nào cần xóa. Ví dụ: scrollview của tôi chỉ có UILabels vì vậy khi tôi chạy như sau:
// 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];
}
Điều này sẽ chỉ xóa tất cả các nhãn nhưng giữ thanh cuộn (chế độ xem hình ảnh). Lưu ý: thao tác này sẽ không hoạt động nếu bạn muốn giữ các chế độ xem hình ảnh cụ thể trong khi đồng thời bạn muốn giữ các thanh cuộn.
- 1. Xóa tất cả các bản xem trước khỏi UIScrollView?
- 2. cách xóa tất cả các đối tượng khỏi Dữ liệu chính
- 3. Cách xóa tất cả QGraphicsItem khỏi QGraphicsScene
- 4. Cách xóa tất cả thông báo cục bộ khi ứng dụng bị xóa khỏi iPhone
- 5. Xóa tất cả các giá trị khỏi một QMap
- 6. Cách xóa tất cả các hàng khỏi lưới Kendo
- 7. Xóa tất cả trẻ em khỏi QVBoxLayout
- 8. Xóa tất cả JavaScript khỏi trang HTML
- 9. Xóa tất cả CSS khỏi các điều khiển telerik
- 10. Xóa tất cả các tệp git khỏi một thư mục?
- 11. Buộc xóa tất cả các tệp khỏi một thư mục
- 12. MySQL xóa tất cả các chỉ mục khỏi bảng
- 13. Xóa tất cả các nút con khỏi cha/mẹ?
- 14. Xóa một đối tượng đơn lẻ khỏi đối tượng Javascript
- 15. Javascript: Xóa thuộc tính cho tất cả các đối tượng trong mảng
- 16. Xóa tất cả các hàng khỏi bảng, ném nullpointer
- 17. Xóa dữ liệu khỏi tất cả các bảng trong MYSQL
- 18. Xóa danh sách các đối tượng khỏi danh sách khác
- 19. SQL: xóa tất cả dữ liệu khỏi tất cả các bảng có sẵn
- 20. Cách xóa tất cả khỏi bản đồ google
- 21. Cách xóa tất cả dữ liệu khỏi solr và hbase
- 22. Xóa đối tượng khỏi danh sách đối tượng trong python
- 23. Cách xóa một chi nhánh và tất cả các đối tượng mà nó tham chiếu
- 24. Làm cách nào để xóa tất cả các mục khỏi NSTableView do NSArrayController kiểm soát?
- 25. Cách xóa tất cả các tệp đã xóa khỏi kho lưu trữ?
- 26. Cách lấy danh sách tất cả các đối tượng? - PostgreSQL
- 27. KVO: Tôi có thể xóa tất cả các nhà quan sát khỏi đối tượng cụ thể không
- 28. Xóa các mục khỏi danh sách và tất cả các tham chiếu đến chúng
- 29. Lấy tất cả các đối tượng ổ cắm trong io.socket
- 30. Đối tượng xóa khỏi phiên SQLAlchemy
Không xóa tất cả các bản xem trước của 'UISubview'. Đó là chế độ xem chỉ báo cuộn là các bản xem trước. Bạn cũng sẽ loại bỏ chúng. Tôi khuyên bạn nên đặt chế độ xem nội dung trong vùng chứa UIView của riêng bạn. (giữ nó như là một ivar để dễ dàng truy cập trong khi thêm và loại bỏ từ nó) – ohhorob