Tôi chưa bao giờ xây dựng giao diện người dùng hoàn chỉnh bằng bộ công cụ UI, vì vậy tôi không có nhiều kinh nghiệm với nó. Đây là những gì tôi nghĩ nên làm việc mặc dù.
Mỗi UIView, và đây là UIWindow, có một thuộc tính subviews
, đó là NSArray chứa tất cả các cuộc phỏng vấn.
Chế độ xem phụ đầu tiên bạn thêm vào chế độ xem sẽ nhận được chỉ số 0 và chỉ mục tiếp theo 1 trở đi. Bạn cũng có thể thay thế addSubview:
bằng insertSubview: atIndex:
hoặc insertSubview:aboveSubview:
và các phương thức như vậy có thể xác định vị trí của khung nhìn phụ của bạn trong hệ thống phân cấp.
Vì vậy, hãy kiểm tra mã của bạn để xem chế độ xem nào bạn thêm trước vào UIWindow. Đó sẽ là 0, số còn lại sẽ là 1.
Bây giờ, từ một trong các cuộc phỏng vấn của bạn, để tiếp cận người khác, bạn sẽ làm như sau:
UIView * theOtherView = [[[self superview] subviews] objectAtIndex: 0];
// or using the properties syntax
UIView * theOtherView = [self.superview.subviews objectAtIndex:0];
Hãy cho tôi biết nếu điều đó làm việc cho trường hợp của bạn!
(bên dưới điểm đánh dấu này là câu trả lời trước của tôi):
Nếu các khung nhìn cần liên lạc với nhau, chúng nên thực hiện thông qua bộ điều khiển (nghĩa là sử dụng mô hình MVC phổ biến ).
Khi bạn tạo một chế độ xem mới, bạn có thể chắc chắn rằng nó tự đăng ký với bộ điều khiển.
Vì vậy, kỹ thuật là đảm bảo các khung nhìn của bạn đăng ký với một bộ điều khiển (có thể lưu trữ chúng theo tên hoặc bất cứ thứ gì bạn thích trong Từ điển hoặc Mảng). Hoặc bạn có thể yêu cầu bộ điều khiển gửi tin nhắn cho bạn hoặc bạn có thể lấy tham chiếu đến chế độ xem và liên lạc trực tiếp với nó.
Nếu chế độ xem của bạn không có liên kết trở lại bộ điều khiển (có thể là trường hợp) thì bạn có thể sử dụng các phương thức singletons và / hoặc lớp để có được tham chiếu đến bộ điều khiển của mình.