2010-03-29 35 views
6

Có thể kiểm tra khi nào nút quay lại được nhấn trong ngăn xếp UINavigationController không? Tôi đã thử thêm một hành động và nhắm mục tiêu đến self.navigationItem.backBarButtonItem để không có kết quả.Làm thế nào để biết khi nào nút quay lại được nhấn trong một UINavigationControllerStack

Bất kỳ ai có bất kỳ giải pháp nào?

+1

Khi bạn thay đổi backBarButtonItem, hãy chắc chắn rằng bạn đang thay đổi nó trên bộ điều khiển mà bạn đang quay trở lại/đến /, không phải là một trong đó chỉ là đẩy. Ngoài ra, bạn chỉ có thể đặt tiêu đề tùy chỉnh hoặc chế độ xem tùy chỉnh. Nếu bạn đặt một hình ảnh tùy chỉnh, nó sẽ không có hiệu lực. Cuối cùng, bạn có thể sử dụng đề xuất của Noah bên dưới, nhưng hãy tự mình làm đại biểu của trình điều khiển điều hướng và trả lời cho didPopViewController: họ phương thức. –

+1

UINavigationControllerDelegate không có phương thức will/didPopViewController, chỉ sẽ/didShowViewController. – dstnbrkr

Trả lời

-1

Một cách để có được điều này sẽ được ghi đè viewWillDisappear trong UIViewController đó là có thể nhìn thấy khi nút quay lại được nhấn:

- (void)viewWillDisappear:(BOOL)animated { 
    if (self.isMovingFromParentViewController) { 
     // handle back button press 
    } 
} 

Rõ ràng điều này không trực tiếp đánh chặn báo chí vào nút quay lại chính nó, nhưng nó mang lại cho bạn một cơ hội để thực hiện logic tại thời điểm đó.

+0

Đây là một ý tưởng nhưng ... 'viewWillDisappear' sẽ được gọi trong quá nhiều trường hợp. Đây không phải là cách hoàn hảo! – VietHung

+0

Tôi có thể thiếu một cái gì đó, nhưng tôi nghĩ rằng kiểm tra 'self.isMovingFromParentViewController' giải quyết vấn đề đó. – mon4goos

+0

@ mon4goos self.isMovingFromParentViewController không hoạt động – Dejell

0

Bạn có thể thử cách của tôi:

Viết trong ViewController của bạn: Phương pháp

UIBarButtonItem *backBt = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"imageNameOfBackButton"] style:UIBarButtonItemStyleBordered target:self action:@selector(backBt_touch:)]; 
self.navigationItem.leftBarButtonItem = backBt; 

Và hành động:

- (void)backBt_touch:(id)sender { 
    [self.navigationController popViewControllerAnimated:YES]; 
} 

Bạn cần phải chụp ảnh của nút quay lại mà bạn muốn.

Hoạt ảnh ẩn nút quay lại khi chế độ xemTrình điều khiển được bật không phải là hoạt ảnh giống nhau của iOS!

P/s: enter image description here Tôi đã tải nó từ trình mô phỏng. Hy vọng nó hữu ích! :)

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