swift - 嵌入到导航控制器时从视图控制器访问方法
问题描述
我有两个视图控制器 AVC 和 BVC ,我正在用 CustomTransition 动画呈现模态 BVC。我需要从 AVC 访问方法“myMethod()”。这是问题所在的代码部分:
enum TransitionType {
case presentation
case dismissal
}
class CustomTransition: NSObject, UIViewControllerAnimatedTransitioning {
var transition: TransitionType = .presentation
func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {
let fromVC = transitionContext.viewController(forKey: .from)
let toVC = transitionContext.viewController(forKey: .to)
// When AVC is embedded in navigationController, I can't access "myMethod"
guard let myObject = transition == .presentation ? (fromVC as! AVC).myMethod() : (toVC as! AVC).myMethod() else { return }
myObject.isHidden = true
etc...
一切都很好,但是当我将 AVC 嵌入到 navigationController 中时,这不再起作用了。我该怎么做才能让它发挥作用?
非常感谢
解决方案
fromVC
现在是一个UINavigationController
而不是 AVC。要访问后者,您需要使用navigationController?.viewControllers.first
. 然而,这假设 AVC 是嵌入在navigationController
对象中的第一个视图控制器。
推荐阅读
- node.js - 如何使用 vb.net 客户端连接到 node.js Websocket 服务器
- c - 在 C 中解密密码
- c# - 我不能在注册表中添加超过 10 个数字值 DWord
- django - 获取 django.contrib.staticfiles.views.serve 引发的异常
- legend - 删除饼图图例中名称和百分比之间的空格 (amcharts4)
- cuda - 如何对 CUDA 内核中的结构进行原子操作?
- c# - 闪烁的文本框
- c - 如何进入路径中的上一个文件夹?
- javascript - html到内容管理系统
- python - 当类存储在熊猫数据框中时,如何矢量化以访问类方法而不是应用?