5

Tôi đang phát triển một dự án trong mục tiêu-c cho ios và tôi có chế độ xem với nhiều tab sử dụng lớp con của UITabBarController. Mỗi tab có UINavigationController riêng của nó. Khi lượt xem tải trên tab, các sự kiện kích hoạt thích hợp sẽ kích hoạt (viewWillAppear, viewDidLoad, v.v.). Tuy nhiên, khi bạn nhấn vào một tab khác và nhấn lại, không phải tất cả các sự kiện này sẽ kích hoạt lại vì chế độ xem đã là chế độ xem hiển thị cho tab cụ thể đó (ví dụ: viewDidLoad).NSNotification hoặc Delegate để đăng ký khi chế độ xem hiển thị thay đổi

Câu hỏi của tôi là: có thông báo hoặc đại biểu mà tôi có thể đăng ký và nhận thông báo khi chế độ xem hiển thị trong cửa sổ thay đổi không? Tôi đã làm một số nghiên cứu và tôi đã không tìm thấy bất cứ điều gì cụ thể cho việc này. Những gì tôi có kế hoạch làm là:

  1. Kiểm tra xem có thể nhìn thấy khi chỉ số thanh tab thay đổi: tabBarController: didSelectViewController
  2. Đăng ký cho sự kiện này trên mỗi bộ điều khiển chuyển hướng: navigationController: didShowViewController: hoạt hình:

Bằng cách này, tôi sẽ được thông báo bất cứ khi nào các thay đổi visibleViewController bằng cách thay đổi tab hoặc điều hướng trong luồng điều hướng của tab (ngoại trừ các phương thức, trong trường hợp này, tôi không quan tâm đến chúng. Chúng được xử lý rồi).

Đây có phải là phương pháp phù hợp không?

Trả lời

1

Bạn đã xem UITabBarControllerDelegate chưa? Phương pháp này nghe có vẻ những gì bạn đang tìm kiếm:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController 

Từ các tài liệu:

In iOS v3.0 and later, the tab bar controller calls this method regardless 
of whether the selected view controller changed. In addition, it is called only 
in response to user taps in the tab bar and is not called when your code 
changes the tab bar contents programmatically. 

Đây là liên kết: http://developer.apple.com/library/ios/#documentation/uikit/reference/UITabBarControllerDelegate_Protocol/Reference/Reference.html

Hy vọng rằng sẽ giúp!

0

Đầu tiên triển khai phương thức ủy nhiệm UITabBarController "tabBarController: didSelectViewController" và đăng ký cho nó trong ứng dụng đại biểu. Bạn không thể đăng ký cho nó trong mỗi bộ điều khiển điều hướng. Chỉ một đối tượng có thể là đại biểu. Trong phương thức đó, nhập nó vào một UINavigationController.

Sau đó nhận UIViewController bằng cách gọi "topViewController" trên UINavigationController đó. Sau đó gọi phương thức viewWillAppear: trực tiếp trên đó.

+0

Cảm ơn. Tôi sẽ sớm chụp cảnh này - Tôi có một vài lỗi khác để ra khỏi cửa. :) –

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