Tôi đang cố gắng triển khai giao diện người dùng có cấu trúc giống như trong ứng dụng Tweetie , hoạt động như vậy: bộ điều khiển chế độ xem cấp cao nhất dường như là bộ điều khiển điều hướng, chế độ xem gốc là chế độ xem bảng "Tài khoản". Nếu bạn nhấp vào bất kỳ tài khoản nào, tài khoản sẽ chuyển sang cấp thứ hai, có thanh tab ở phía dưới. Mỗi mục tab hiển thị một danh sách khác nhau và cho phép bạn xem chi tiết hơn (các cấp tiếp theo không hiển thị thanh tab).
Vì vậy, điều này có vẻ như phân cấp triển khai là:
UINavigationController
- Tài khoản :
UITableViewController
UITabBarController
- Tweet :
UITableViewController
- Chế độ xem chi tiết của một tweet / người dùng / v.v.
- Trả lời :
UITableViewController
- ...
- Tweet :
- Tài khoản :
Điều này dường như hoạt động [^ 1], nhưng dường như không được hỗ trợ theo tài liệu SDK cho -pushViewController:animated:
(đã thêm phần nhấn mạnh):
viewController : Bộ điều khiển chế độ xem được đẩy lên ngăn xếp. Nó không thể là một phiên bản của bộ điều khiển thanh tab.
Tôi muốn tránh các API riêng tư và những thứ tương tự, nhưng tôi không chắc tại sao việc sử dụng này bị cấm một cách rõ ràng ngay cả khi nó có vẻ hoạt động tốt. Có ai biết lý do không?
Tôi đã nghĩ đến việc đặt bộ điều khiển thanh tab làm bộ điều khiển chính, với mỗi tab chứa bộ điều khiển điều hướng riêng biệt. Vấn đề với điều này là mỗi bộ điều khiển nav cần phải chia sẻ một bộ điều khiển chế độ xem gốc duy nhất (cụ thể là bảng "Tài khoản" trong Tweetie ) - điều này dường như không hoạt động: việc đẩy bộ điều khiển bảng sang bộ điều khiển nav thứ hai dường như loại bỏ nó từ đầu tiên. Chưa kể tất cả việc ghi sổ khi chọn một tài khoản khác có lẽ sẽ là một khó khăn.
Làm thế nào tôi nên thực hiện điều này đúng cách?
[^ 1]: Bộ điều khiển thanh tab cần được phân lớp để mục điều hướng của bộ điều khiển thanh tab ở cấp đó vẫn đồng bộ với mục điều hướng của tab đã chọn và bộ điều khiển bảng của từng tab cần phải đẩy các chế độ xem chi tiết tương ứng của chúng lên self.tabBarController.navigationController
thay vì self.navigationController
.