ios - UIStoryboardSegue 为子类中的属性设置动画
问题描述
我有一个UIStoryboardSegue
用下一个视图控制器替换当前视图控制器的子类。
由于我们Animates
在界面编辑器中有一个属性,我想在子类中访问这个属性。
我的代码如下:
class ReplaceSegue: UIStoryboardSegue {
override func perform() {
var viewControllers = source.navigationController?.viewControllers.dropLast() ?? []
viewControllers.append(destination)
source.navigationController?.setViewControllers(viewControllers.map {$0}, animated: true) // I dont want this `true` to be hardcoded
}
}
解决方案
根据UIStoryBoardSegue
课堂评论
segue 运行时将在调用此方法之前调用 +[UIView setAnimationsAreEnabled:],基于 segue 的 Properties Inspector 中的 Animates 复选框的值。
所以很明显你可以通过使用来读取动画复选框的值
UIView.areAnimationsEnabled
所以在我的自定义segue中
class MySegue: UIStoryboardSegue {
override func perform() {
debugPrint(UIView.areAnimationsEnabled)
}
}
false
如果动画复选框是unchecked
或者true
如果是的话,这会打印出来checked
:)
所以在你的情况下
class ReplaceSegue: UIStoryboardSegue {
override func perform() {
var viewControllers = source.navigationController?.viewControllers.dropLast() ?? []
viewControllers.append(destination)
source.navigationController?.setViewControllers(viewControllers.map {$0}, animated: UIView.areAnimationsEnabled)
}
}
我希望发生的事情已经很清楚了,以防你仍然有疑问,这里是解释,iOS 检查动画复选框值并使用它来设置动画是否启用,方法是setAnimationsAreEnabled
在调用之前调用界面中的动画复选框的值perform()
方法。
因此,当控件到达内部执行时,您可以确定 iOS 已经读取了动画的值复选框并使用它来设置setAnimationsAreEnabled
您现在要做的就是要求areAnimationsEnabled
获取动画的值复选框。
所以这应该为您提供动画复选框的价值:)
希望能帮助到你 :)
推荐阅读
- linux - 如何在bash中找到带有前缀名称的最后更新文件?
- kotlin - 从 Kotlin 中的位掩码获取枚举列表
- apache-camel - Apache Camel 在写入 SFTP 服务器时丢失 CRLF
- r - 编写一个函数来计算一个带有序列参数和求和的变量
- android - 将库添加到 AOSP 并在 NDK 中使用它们
- mongodb - Helidon MP REST 服务教程或使用 DBClient 2 的 mongodb 示例
- html - 用谷歌浏览器打开时,html代码显示为文本
- npm - 我收到一个错误:ENOENT:没有这样的文件或目录,scandir
- rtp - 如何在 Linux 下使用 Python 从 RTP PAYLOAD 以多通道模式写入 AMR-WB 文件
- java - 如何实现 Twitter 的“喜欢”按钮