swift - 如何绕过不完整的 segue 错误
问题描述
我想我遇到了 Xcode 本身的错误,并希望能找到一些帮助以某种方式绕过该问题。我有一个用 AVKit 播放的视频,我想在它完成后转到另一个视图控制器。我发现必须先关闭视频视图控制器,然后才能调用 segue,所以我添加了它。视频的结尾与新的视图控制器匹配,所以我希望切换平滑,所以我设置了动画:false 表示关闭,这就是导致问题的原因。如果动画设置为true,则segue运行良好,但如果设置为false,则segue没有完全完成,视频被禁用,我可以看到旧的视图控制器,segue只有在我点击屏幕时才会生效,并出现新的视图控制器。这是那个代码
animPlayer.dismiss(animated: false)
self.performSegue(withIdentifier: "BackpackSegue", sender: self)
更奇怪的是,代码在物理 ipad 上运行得非常好,所以它一定是模拟器错误
编辑:这是整个 swift 文件,我是新手,所以如果您需要项目中的其他内容,请告诉我。
import UIKit
import AVKit
class FrontDoorOpen: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
}
*/
override var prefersStatusBarHidden: Bool{
return true
}
@IBOutlet weak var SegueImage: UIImageView!
let animPlayer = AVPlayerViewController()
@IBAction func DoorCloseSegue(_ sender: Any) {
if let path = Bundle.main.path(forResource: "DoorClose", ofType: "avi", inDirectory: "SegueAnimations")
{
let SegueAnimation = AVPlayer(url: URL(fileURLWithPath: path))
animPlayer.player = SegueAnimation
animPlayer.showsPlaybackControls = false
animPlayer.videoGravity = AVLayerVideoGravity.resizeAspectFill
NotificationCenter.default.addObserver(self, selector: #selector(self.finishVideo), name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: nil)
present(animPlayer, animated: false, completion:
{
SegueAnimation.play()
})
}
SegueImage.isHidden = false
}
@objc func finishVideo()
{
animPlayer.dismiss(animated: false)
// Simulator Pauses Here !!
self.performSegue(withIdentifier: "DoorCloseSegue", sender: self)
}
}
在尝试了更多之后,模拟器似乎在关闭和转场之间暂停,转场只发生在点击
解决方案
推荐阅读
- docker - VSCODE 扩展远程容器不允许我使用“workspaceMount”
- python - SQLParse 删除注释后截断剩余的 sql
- php - 有没有办法获取 CDATA 的值并在 php 中转换为 json 或数组格式?
- azure - 将 ManagedID 分配给 KeyVault 访问策略
- python - 在 Selenium 映像更新后,Pytest 无限期挂起运行测试
- javascript - 如何更改 React quill 中的颜色选择器图标?
- javascript - 错误类型错误:无法读取 null 的属性(读取“toISOString”)
- javascript - Angular 从 8 升级到 9 - 模板中的 Ivy 编译错误
- java - JSch 在终端上无休止的响应打印
- python - 是否有可能从 PyBind11 获取数组基础,而不仅仅是视图?