2012-05-10 31 views
9

Kịch bản trên iPhone:Nhận UINavigationBar đại biểu để cho phép "trở lại", với một hình ảnh động đẹp

Các người dùng chạm vào nút quay lại, phương pháp UINavigationBar đại biểu (thực hiện trong một lớp con của UINavigationController) trả YES, như thế này:

- (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem *)item 
{ 
    // Verify stuff... 

    return YES; 
} 

Bây giờ, theo docs, đó là trách nhiệm của ứng dụng để giữ cho các thanh nav và nội dung đồng bộ, và là nơi để làm điều đó là trong phương pháp đại biểu

- (void)navigationBar:(UINavigationBar *)navigationBar didPopItem:(UINavigationItem *)item 

Vấn đề là, didPopItem chỉ được gọi sau khi chuỗi hoạt ảnh pop của thanh điều hướng kết thúc, vì vậy nếu tôi gọi [self popViewControllerAnimated: NO] ở đó, kết quả thực là lần đầu tiên thanh điều hướng quay lại, sau đó là nội dung.

Và điều đó có vẻ sai.

Nếu tôi gọi bộ điều khiển điều hướng pop... trong phương thức đại biểu shouldPop..., tôi nhận được thông báo lỗi về hiệu ứng tôi đang chồng chéo hoạt ảnh và trạng thái cuối cùng không sạch. Vì vậy, câu hỏi của tôi là, có một cách khác để có được UINavigationController để thay đổi nội dung, tốt nhất là với một hình ảnh động đẹp đồng bộ với thanh điều hướng, nhưng không tạo sự nhầm lẫn giữa thanh điều hướng và bộ điều hướng điều hướng không? Không.

Hệ điều hành đích là iOS 4.2 trở lên.

Tôi biết rằng tôi chỉ có thể tạo nút trái khác thay cho nút quay lại, nhưng tôi thấy nó sạch hơn để sử dụng đại biểu, cộng thêm, tôi nhận được nút quay "thực", đó là những gì tôi muốn.

+0

Y u muốn gọi didPopItem Phương pháp trước khi chuỗi hoạt hình pop nav thanh như u có người viết trong 3 paragrah..What u wana làm u có thể xin vui lòng chắc nó rõ ràng ur 3rd paragh whihc là u nghĩ rằng quetion chính ur –

+1

Tại sao bạn sử dụng một thanh điều hướng riêng biệt với một 'UINavigationController' thay vì sử dụng một trong nó cung cấp? – Greg

Trả lời

3

Nếu bạn đang sử dụng một UINavigationController, bạn không cần phải quản lý này cho mình. Bạn sẽ tiết kiệm cho mình rất nhiều rắc rối bằng cách sử dụng UINavigationController. Nó sẽ chăm sóc popping xem nội dung cùng với các mục thanh điều hướng.

1

Hãy thử cách này:

Hãy tưởng tượng bạn có chế độ xemControllerA và viewControllerB. viewControllerA là cái đầu tiên và không cần navigationBar và viewControllerB.

Trên phương pháp viewWillAppear trong viewControllerA đặt mã:

[self.navigationController setNavigationBarHidden:YES animated:YES]; 

và khi popping các viewControllerB bạn làm như vậy với hình ảnh động. Cả hai hình động sẽ được đồng bộ hóa tự động.

Không biết nếu điều này là hợp lệ cho iOS4.2

Các vấn đề liên quan