2010-09-22 37 views
11

HI, Tôi có Parentview -> Nhiều chế độ xem con. khi tôi sử dụng [self bringSubviewToFront: childview] trong parentview, nó hoạt động tốt. Nhưng sau khi thêm grandchildview vào childview, khi tôi sử dụng [self bringSubviewToFront: grandchildview] trong parentview, nó không hoạt động?bringSubviewĐối với vấn đề trước?

Trả lời

52

Phương thức -[UIView bringSubviewToFront:] chỉ hoạt động cho trẻ em trực tiếp, không phải là cháu. Hãy nhớ rằng hệ thống phân cấp khung nhìn là một cây, và thông thường một khung nhìn chỉ biết về "cha mẹ" (hoặc superview) của nó và "các con" trực tiếp của nó (hoặc các bản xem trước). Bạn sẽ cần phải làm một cái gì đó như thế này:

// First, get the view embedding the grandchildview to front. 
[self bringSubviewToFront:[grandchildview superview]]; 
// Now, inside that container view, get the "grandchildview" to front. 
[[grandchildview superview] bringSubviewToFront:grandchildview]; 
+2

làm việc tốt ... code tuyệt vời! –

+0

làm điều này đệ quy sẽ thậm chí tốt hơn –

+1

@PizzaiolaGorgonzola Đối với các cấp làm tổ tùy ý, có, một phương pháp đệ quy sẽ là con đường để đi. Đối với trường hợp đơn giản này, nó sẽ là overkill, mặc dù. – DarkDust

0

đóng góp của tôi với phiên bản nhanh chóng từ các giải pháp kiểm tra

self.bringSubviewToFront(self.grandchildview.superview!) 
self.grandchildview.superview!.bringSubviewToFront(self.grandchildview)