ios - 导航栏现在使用协调器导航显示
问题描述
UIViewController
要将屏幕导航逻辑与本教程
分开: https ://www.hackingwithswift.com/articles/71/how-to-use-the-coordinator-pattern-in-ios-apps
一切都使用 正确设置Coordinator
protocol
,但导航栏未显示。
协调员.swift
protocol Coordinator {
var childCoordinator: [Coordinator] {get set}
var navigationController: UINavigationController {get set}
func start()
}
MainCoordinator.swift
class MainCoordinator: Coordinator {
var childCoordinator = [Coordinator]()
var navigationController: UINavigationController
init(navigationController: UINavigationController) {
self.navigationController = navigationController
}
func start() {
let vc = ViewController.instantiate()
navigationController.pushViewController(vc, animated: false)
navigationController.title = "Home"
navigationController.navigationBar.prefersLargeTitles = true
}
}
完整的源代码可以在 GitHub 上找到: https ://github.com/harshal-wani/CoordinatorNavigation
如何解决?
谢谢
解决方案
作为替代方案,您还可以按如下方式修改场景委托:
var window: UIWindow?
var coordinator: MainCoordinator?
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
let navController = UINavigationController()
coordinator = MainCoordinator(navigationController: navController)
coordinator?.start()
if let windowScene = scene as? UIWindowScene {
let window = UIWindow(windowScene: windowScene)
window.rootViewController = navController
self.window = window
window.makeKeyAndVisible()
}
}
推荐阅读
- javascript - 回调 connect.query
- cloudflare - Cloudflare Rocket 加载程序阻塞 JS
- python - 在一个虚拟机配置文件而不是另一个虚拟机配置文件上使用 Python 出现 SSL 错误
- installation - Windows 上的 Grav CMS
- python - 如何根据自定义装饰器管理员角色显示/隐藏导航栏项目
- excel - Powershell:excel盒子和晶须图
- jquery - 如何在 jquery 中使用 onchange 事件触发 datarangepicker 事件?
- spring - 多个可选的@RequestParam 未在 Spring Boot 中获取数据
- ios - 如何在 KMM(kotlin 本机)共享模块中读取 Swift 框架库中生成的对象数组
- vue.js - 如何处理内存中旧 vue 代码和新版本的用户?