问题标签 [coordinator-pattern]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - 在 MVVM-C 中的 ViewModel 之间传递数据
我正在使用 MVVM 和 Coordinator 来设计应用程序。我怀疑的一件事是如何在不同的ViewModels
. 通常,前一个 viewModel 只会创建下一个 viewModel,并且只会在prepareforsegue
. 但是,既然我负责所有导航,我该如何实现呢?
我当然可以创建ViewModel
for CreateAccountViewController
inMainViewModel
并将 theViewModel
作为参数传递给createAccount
方法,但在这里这样做是正确的方法吗?这里的单元测试含义是什么?
ios - Swift 将项目重构为 MVVM-C
所以我正在尝试从 MMVM 重构现有项目并添加协调器。我有以下课程:
在 appDelegate 我做如下:
VC是:
}
扩展 ViewController: GenreViewModelDelegate { func didfinish(succsess: Bool) { MBProgressHUD.hide(for: self.view, animated: true) if succsess { self.collectionView.reloadData() } else { let action = UIAlertAction(title: "再试一次",样式:.default,处理程序:{ (action) in self.getData() }) Alerts.showAlert(vc: self, action: action) } } }
扩展 ViewController: UICollectionViewDelegateFlowLayout { func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { return CGSize(width: 100, height: 100) } }
扩展视图控制器:UICollectionViewDataSource {
}
虚拟机是:
问题是,当我试图将 viewModel 注入 ViewController 并在 start 函数中将其推送时,它将不起作用——当 viewDidLoad 在 VC 中调用 viewModel 时为零。
swift - 展开时 window.rootViewController nil
我想通过使用文件在我的 Swift 项目中使用 Coordinator Navigator()
,但我需要将UINavigationController
内部传递给navigator.show()
.
问题是 XCode 显示此错误:
应用委托
如何将其window.rootViewController! as! UINavigationController
作为非可选值传递?
ios - 阻止 iOS 应用加载默认 Storyboard 入口点
我正在关注协调器模式的本教程,到目前为止,我已经完成了创建协调器并从应用程序委托运行 start() 的过程。但是随后在该协调器上调用函数不起作用,因为突然协调器 var 为零。似乎显示的初始视图控制器不是来自 coordinator.start() 的控制器,而是来自故事板入口点的控制器。我确实在项目目标的主界面中禁用了 Main。
应用委托:
主要协调人:
初始化视图控制器(故事板中最初的那个,但我用协调器展示它):
Storyboarded 协议 - 用于通过 id 将视图控制器从情节提要中取出:
swift - 快速解除协调器模式中的控制器的最佳方法
我正在研究从这里开始的协调器模式,但由于可能存在内存泄漏,我不了解从控制器中的通用按钮中解散的更安全方法(“后退”按钮的机制可以)。
例如,我到达 ViewController2,做我的事情,然后点击一个按钮(除了导航栏中的后退按钮之外的任何人)如何正确关闭?经典有问题popViewController
吗?还是在“MyCoordinatorClass”中更好地实现这样的功能??deinit
似乎总是正确调用,但我不确定哪个更好。另外,我一直使用推送,但它也可以在当前模式下使用,有什么可能的问题吗?欢迎任何帮助或澄清
我的协调员协议
我的故事板协议
我的 MainCoordinatorClass
ios - coordinator 是 nil 并且没有在按钮点击时导航到下一个屏幕
我一直在尝试重构我的源代码,使其符合协调器模式。我已用作UITabBarController
我的应用程序的父视图控制器,其中包含 4 个视图控制器。
我一直在关注如何为 iOS 应用程序实现协调器模式的教程,并且我已经创建并设置了协调器的协议和类。我的 viewController 中有一个按钮(TabbarViewController 的子 viewController),但是,在单击按钮时,协调器没有推送/导航到所需的 VC,并且我看到协调器nil
在通过 调试时返回调试控制台breakpoint
,并且我无法弄清楚如何解决此问题。
MainCoordinator.swift:
SubCoordinator.swift:
StoryBoarded.swift
:
FirstViewController.Swift:
ViewController.swift:
和
start()
正在调用,并且 splashVC 出现并MainViewontroller
在完成时更新 rootViewController,但是导航在按钮单击事件上根本不起作用。
任何反馈或帮助将不胜感激!
ios - 使用 Coordinator 设计模式在 ViewControllers 之间传递数据(没有 prepareForSegue)
我的项目采用 MVVM 架构构建,我使用 Coordinator 设计模式来处理导航(全部以编程方式,不涉及 Storyboard)。
它由几个 TableViewController 组成,其中包含用户、相册、照片、帖子和评论,每个都有自己的 TableViewController。在每个用户单元格中,您都可以访问其相册和帖子。选择相册或帖子,您可以查看更多详细信息等...
我从 {JSON} Placeholder API 获取数据并将其显示在表视图上,但似乎无法将数据从第一个传递到下一个。由于我正在使用导航控制器,并且没有转场,因此prepare(for segue:)
在从一个视图导航到另一个视图之前,我不能使用设置下一个表视图。
我通过函数触发导航,didTapAlbums(with userId: Int, by name: String)
并didTapPosts(with userId: Int, by name: String)
调用我的 Coordinator 协议中的方法eventOcurred(with: Event)
设置,将下一个 TableViewController 推入 NavigationController。
这是我的主要协调员课程:
这是第一个 TableViewController,它显示用户:
我要做的就是将值传递给userId
下name
一个控制器。
编辑:协调器和协调协议