2010-12-30 30 views
6

Tôi có một bộ điều khiển Nav bên trong một lớp con tùy chỉnh của thanh điều khiển Tab mà tôi đã tạo.Có sự kiện Tab Bar nào để thông báo khi ai đó ẩn/hiện Tab Bar không?

Tôi muốn biết từ trong Tab tùy chỉnh (tùy chỉnh) bất cứ khi nào một trong các bộ điều khiển được hiển thị cố gắng ẩn hoặc hiển thị Thanh tab. (ví dụ khi đẩy một VC có hidesBottomBarWhenPushed = YES vào bộ điều khiển Nac).

Tóm lại, tôi muốn được thông báo về các sự kiện ẩn/hiển thị Tab Bar nhưng không thể tìm thấy bất kỳ thứ gì trong tài liệu tham khảo của Apple. Tôi đã thử nhìn vào UITabBar, UITabBarDelegate, UITabBarController, và UITabBarControllerDelegate nhưng tất cả dường như chỉ cung cấp chức năng liên quan đến các mục trên thanh tab.

Xin cảm ơn trước.

Trả lời

0

Lớp con UINavigationController và triển khai setter đằng sau ẩnBottomBarWhenPushed (hoặc phân lớp UIViewController thành trực tiếp phân lớp phương thức hidesBottomBarWhenPushed) và ủy quyền cuộc gọi đến UITabBar (thông qua cuộc gọi trực tiếp hoặc NSNotification).

+0

Tôi không chắc tôi có được nó. hidesBottomBarWhenPushed là thuộc tính thể hiện trạng thái. Thuộc tính không chứa mã thực sự ẩn thanh (thuộc tính thường được đặt trước khi bộ điều khiển được đẩy lên ngăn xếp nav vc). – nsof

9

Nếu bạn đang sử dụng bộ điều khiển thanh tab, UIKit tuyên bố rõ ràng rằng mọi cá thể điều khiển điều hướng sẽ được hiển thị trong ngữ cảnh của trình điều khiển thanh tab sẽ nằm trong số thuộc tính viewControllers. Giờ đây, mỗi cá thể UINavigationController có một đại biểu, xác định phương thức navigationController:willShowViewController:animated: cho phép bạn biết khi nào bộ điều khiển chế độ xem được đẩy lên đó.

Bằng cách đặt bộ điều khiển thanh tab làm đại biểu của mọi bộ điều khiển điều hướng được đẩy lên, bạn có thể phân tích thời gian bộ điều khiển xem được đẩy có thuộc tính hidesBottomBarWhenPushed được đặt và tạo sự kiện khi trường hợp này xảy ra.

Thuật toán được sử dụng để ẩn thanh tab của bộ điều khiển thanh tab như sau: khi bộ điều khiển xem được đẩy trên bộ điều khiển điều hướng nằm trong bộ điều khiển thanh tab, nếu có bất kỳ bộ điều khiển xem nào trong ngăn điều hướng bộ điều khiển có thuộc tính hidesBottomBarWhenPushed, sau đó thanh tab phải được ẩn.

Vì vậy, thanh tab bị ẩn khi bộ điều khiển điều hướng được chọn và một trong các bộ điều khiển chế độ xem trong ngăn xếp của nó có thuộc tính hidesBottomBarWhenPushed.

+0

cách đặt bộ điều khiển thanh tab làm đại biểu của bộ điều khiển điều hướng? Tôi đang gặp lỗi. Tôi đang cố gắng 'self.navigationController? .delegate = self.tabBarController' Lỗi -' Không thể gán giá trị của kiểu UITabBarController? gõ UINavigationControllerDelegate? ' –

+0

Lỗi được giải quyết bằng cách sử dụng' self.navigationController? .delegate = self.tabBarController as! MyCustomTabBarViewController ' –

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