5

Tôi gặp sự cố liên quan đến Trình điều khiển điều hướng trong AppDelegate. Tôi đang sử dụng một kịch bản, mà trông như thế này:Cách sử dụng Công cụ điều hướng tùy chỉnh trong AppDelegate bằng cách sử dụng Bảng phân cảnh

Storyboard

Như một kết quả của việc sử dụng thông báo Push, tôi đã có những chức năng sau đây trong appdelegate tập tin của tôi:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { 
//... 
} 

Khi thông báo đến tôi muốn khởi tạo "Xem chi tiết" - Bộ điều khiển cần ID làm tham số. ID này là một phần của trọng tải của tôi do đó nó có mặt trong didReceiveRemoteNotification.

Tôi muốn đến follwing:

DetailView *detail = [storyboard instantiateViewControllerWithIdentifier:@"detail"]; 

detail.conversationID = theID; 

[self.navigationController pushViewController:detail animated:YES]; 

Câu hỏi của tôi vào thời điểm này là: làm thế nào tôi có thể nhận được bộ điều khiển chuyển hướng? Tôi đã tìm kiếm một hàm như "getNavigationControllerByIdentifier" hoặc một cái gì đó như thế này, nhưng không tìm thấy gì cả. Tôi không thể khởi tạo Bộ điều khiển Xem chi tiết trực tiếp vì thanh điều hướng bị thiếu ở đó.

Tôi hy vọng bạn hiểu những gì tôi có nghĩa là - nếu bạn nghĩ cách tiếp cận của tôi là hoàn toàn sai hãy sửa lại cho tôi; o)

Chỉ cần một thông tin nhỏ: Đó không phải là quan trọng đối với tôi rằng nút quay lại trong Detail View Controller đi quay lại Chế độ xem bảng - nó đủ khi nó liên kết với bộ điều khiển bằng nút "Tải chế độ xem bảng".

Cảm ơn bạn đã trợ giúp!

Trả lời

8

UINavigationController là một lớp con UIViewController và cũng có thể được chỉ định một số nhận dạng trong bảng phân cảnh.

Sử dụng -instantiateViewControllerWithIdentifier: để tạo UINavigationController và bộ điều khiển chế độ xem gốc của nó. Bạn có thể cần phải khởi tạo tất cả các bộ điều khiển trung gian trong mã và sửa đổi thuộc tính viewControllers của bộ điều hướng để thiết lập ngăn điều hướng thích hợp. Bằng cách này, khi ứng dụng khởi chạy vào chế độ xem chi tiết, họ có thể tìm đường quay lại như thể họ đã đẩy tất cả theo cách thủ công qua giao diện.

+0

Cảm ơn bạn. Bây giờ nó rõ ràng và hoạt động :-) (Bounty chỉ có thể dùng được trong 10 giờ nên đừng lo lắng; o)) –

4

Bạn có thể sử dụng rootViewController trên đối tượng cửa sổ của mình.

UIViewController *rootViewController = self.window.rootViewController; 
// You now have in rootViewController the view with your "Hello world" label and go button. 

// Get the navigation controller of this view controller with: 
UINavigationController *navigationController = rootViewController.navigationController; 

// You can now use it to push your next view controller: 
DetailViewController *detail = [navigationController.storyboard instantiateViewControllerWithIdentifier:@"detail"]; 
detail.conversationID = theID; 
[navigationController pushViewController:detailViewController animated:YES]; 
Các vấn đề liên quan