2012-08-07 70 views
7

Tôi có ứng dụng iOS bảng phân cảnh có một số lượt xem mà tôi đã đẩy qua. Tôi có một UINavigationController với tùy chọn "Hiển thị Thanh công cụ" được chọn, sau đó điền vào trong toàn bộ hệ thống phân cấp của tôi.Làm cách nào để ẩn thanh công cụ của UINavigationController bằng bảng phân cảnh?

Say dòng chảy quan điểm của tôi là 3 điểm, A, B, và C:

View A --(push)--> View B --(push)--> View C 

Xem A là một cái nhìn khiển bình thường, với một nút trên thanh công cụ sử dụng để đẩy Xem B. Xem B một bộ điều khiển bảng, vì vậy tôi muốn ẩn thanh công cụ ở đây. Chế độ xem C là một chế độ xem khác như Chế độ xem A, với thanh công cụ bắt buộc phải được hiển thị.

Trong Xcode/Storyboard, nếu trong Chế độ xem BI chọn "Ẩn thanh dưới cùng khi đẩy", nó thực hiện chính xác - thanh dưới cùng bị ẩn cho Chế độ xem B. Tương tự, nếu tôi chọn 'Không' cho 'Thanh dưới cùng' tùy chọn, không có thanh nào cho Chế độ xem B. Tốt. Đây là vấn đề của tôi: Không có vấn đề gì tôi làm, bằng cách sử dụng một trong hai tùy chọn cho xem B, thanh công cụ của tôi không trở lại xem C. Nếu tôi đặt thanh công cụ View C như suy luận (và bỏ chọn ẩn khi đẩy) nó doesn ' t hiển thị, cũng không phải nếu tôi đặt nó theo cách thủ công thành 'Thanh công cụ'.

Bất kỳ ý tưởng nào?

Trả lời

15

Như @ Zoltán đã nói, Storyboard không cung cấp câu trả lời hoàn chỉnh.

Đặt self.navigationController.toolbarHidden = YES/NO trên viewDidLoad hoặc viewWillAppear là chức năng, nhưng xấu xí (một hình chữ nhật màu đen xuất hiện ở vị trí của thanh công cụ trong khi hoạt ảnh chuyển tiếp xem).

Dưới đây là những gì tôi đã làm cho bộ điều khiển Xem B (và ngược lại cho Xem C) để bắt chước sự mượt mà hình ảnh động của "ẩn trên đẩy" tùy chọn trong các kịch bản:

- (void)viewWillAppear:(BOOL)animated 
{ 
    [self.navigationController setToolbarHidden:YES animated:YES]; 
} 

- (void)viewWillDisappear:(BOOL)animated 
{ 
    [self.navigationController setToolbarHidden:NO animated:YES]; 
} 
+0

Bạn có bao gồm [super viewWillAppear: animated] và [super viewWillDisappear: animated]? –

+1

Đừng quên gọi chế độ xem của siêuWillAppear and viewWillDisappear! – liefersfl

+1

Hoàn hảo! Trong Swift: self.navigationController? .setToolbarHidden (true, animated: true) – abanet

2

Tôi không nghĩ bạn có thể làm điều đó hoàn toàn trong Bảng phân cảnh. Tuy nhiên bạn chỉ có thể đặt nó để hiển thị luôn, đặt các nút trên nó cho mỗi lần xem bạn muốn nó xuất hiện và bạn có thể gọi self.navigationController.toolbarHidden = YES; khi một viewcontroller được nạp trong đó bạn không muốn thanh công cụ xuất hiện. Sau đó nếu VC khác xuất hiện mà bạn muốn thanh công cụ, chỉ cần đặt toolbarHidden thành NO.

+0

này hoạt động, chỉ cần. Nó cho phép chuyển đổi một dấu đen xấu xí khi thanh công cụ biến mất. Nhưng nó đúng về mã cần thiết, và không có khả năng cho Storyboards để cung cấp toàn bộ điều. – Freney

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