2010-08-21 25 views
5

Tôi ghi đè định hướngThay đổi trong ViewController chính của tôi để đẩy ModalViewController A khi thiết bị ở chế độ ngang. Khi được đặt lại ở chế độ dọc, ModalViewController A bị loại bỏ. Tuy nhiên, có những trường hợp khác (sau khi chạm nút) nơi ModalViewControllers B, C hoặc D được hiển thị. Khi những người đang hiển thị, nếu thiết bị được bật phong cảnh và quay trở lại, ModalViewController B C hoặc D được loại bỏ, không thích hợp.Làm cách nào để biết liệu một ModalViewController có đang được hiển thị?

Tôi có thể xác minh rằng định hướngChuyển đổi trên ViewController chính của tôi đang được nhắn tin ngay cả khi một ModalViewController được hiển thị. Có một điều kiện tôi có thể thêm vào phương pháp -orientationChanged của tôi để bỏ qua mã đó khi ModalViewController B C hoặc D đang được hiển thị?

Cảm ơn bạn!

Trả lời

6

Bạn có thể kiểm tra xem thuộc tính modalViewController trong bộ điều khiển chế độ xem chính của bạn có phải là một trong các bộ điều khiển chế độ xem của bạn hay không.

+2

Cảm ơn, điều này đã hiệu quả. Tôi đã sử dụng điều kiện: if ([self.modalViewController isMemberOfClass: [UINavigationController class]]) ... – ed94133

1

Bạn có thể sử dụng mã này để tìm ModalViewController cuối cùng là gì.

UIViewController *leafController = self; 
while(true) { 
    if (leafController.modalViewController) { 
     leafController = leafController.modalViewController; 
     continue; 
    } 
    break; 
} 
[leafController presentModalViewController:showController animated:YES]; 
Các vấn đề liên quan