gpt4 book ai didi

ios - 使用转换委托(delegate)时触发 viewWillAppear

转载 作者:搜寻专家 更新时间:2023-10-31 22:20:46 25 4
gpt4 key购买 nike

我想呈现一个 View Controller :

  • 模态
  • 使用自定义转换
  • 同时,我想确保当它被关闭时,它背后的 View Controller 知道被推到前台

我的基本想法是尝试一些不同的配置,看看哪一个会导致 viewWillAppear 在后面的 View Controller 上被调用。

尝试 1

presentedViewController.modalPresentationStyle = .Custom
presentedViewController.transitioningDelegate = someTransitioningDelegate

这种方法的结果:

  • 自定义过渡效果非常好
  • 当我调用 presentedViewController.dismissViewControllerAnimated(true)

我确实希望 viewWillAppear 在被解雇的 View Controller 下面被调用,所以我这样做了:

尝试 2

presentedViewController.modalPresentationStyle = .FullScreen
presentedViewController.transitioningDelegate = someTransitioningDelegate

presentedViewController.modalPresentationStyle = .FullScreen
presentedViewController.modalTransitionStyle = .CoverVertical
presentedViewController.transitioningDelegate = someTransitioningDelegate

这种方法的结果:

    当关闭 presentedViewController 时,
  • viewWillAppearpresentedViewController 后面的 View Controller 上被调用
  • 呈现 View Controller 时,转换按预期发生。
  • 关闭 View Controller 时,过渡期间的背景是黑色,这是不受欢迎的。

似乎 .FullScreen 导致 presentedViewController 后面的 View Controller 从显示层次结构中删除 - 这很好,因为大概这就是触发 viewWillAppear调用。

尝试 3

presentedViewController.modalPresentationStyle = .FullScreen
presentedViewController.modalTransitionStyle = .CoverVertical

结果是:

  • viewWillAppearpresentedViewController 后面的 View Controller 上被调用。
  • 过渡期间的背景是位于 presentedViewController 后面的 View Controller ,这是需要的。
  • 没有自定义过渡。

我正在从事的项目的结构使得使用委派变得困难(这似乎是建议的答案 here )。利用 NSNotificationCenter 是另一种选择,它让我调用应该由 viewWillAppear 调用的代码,但从尝试 3 开始,我希望有一个更优雅的实现所有这些的方法:

  1. 触发viewWillAppear
  2. 使用自定义过渡
  3. 在过渡动画期间查看在后台呈现的 View Controller

最佳答案

似乎 Apple 认为调用 viewWillAppear 等是犯规行为,但调用 beginAppearanceTransitionendAppearanceTransition 没问题,which in turn will invoke viewWillAppear .我要这样做。

关于ios - 使用转换委托(delegate)时触发 viewWillAppear,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38483624/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com