gpt4 book ai didi

swift - 带条件的@IBSegueAction

转载 作者:行者123 更新时间:2023-11-30 10:41:23 26 4
gpt4 key购买 nike

在我的应用程序中,我想基于 UITapGestureRecognizer 执行 Segue。如果点击位于屏幕顶部区域,则应执行到 SettingsView 的 Segue。

在 UIKit 中这非常简单。我通过将 UITapGestureRecognizer 包装在 if 语句中来触发它。

现在我想在 SwiftUI 中编写 SettingsView() 。 SettingsView() 将嵌入到 UIHostingController 中。

我的问题是:如何执行此 UIHostingController 的转场(同时告诉 UIHostingController 要显示哪个 View )?

我尝试使用新的@IBSegueAction。使用这个@IBSegueAction的原因是我可以用它来告诉UIHostingController要显示哪个View。问题是我现在无法插入条件。无论点击屏幕上的哪个位置,都会执行 segue。我还没有找到取消 @IBSegueAction 中的 segue 的方法。

我的代码目前如下所示:

    @IBSegueAction func showSettingsHostingControler(_ coder: NSCoder, sender: UITapGestureRecognizer, segueIdentifier: String?) -> UIViewController? {

let location = sender.location(in: self.tableView)
if let _ = self.tableView.indexPathForRow(at: location) {
return nil
} else {
if location.y < 32 {
if location.x < view.bounds.midX {
direction = .left
} else {
direction = .right
}
return UIHostingController(coder: coder, rootView: SettingsView())
}
}

return nil
}

当前的结果是,当点击位于错误区域时,应用程序会转到不存在的 Nil View 。

最佳答案

based on a UITapGestureRecognizer. In case the tap is in the top area of the screen

在我看来,您的点击手势识别器连接到了错误的 View 。不应该在这里做出任何决定。在屏幕顶部区域放置一个 View ,并将点击手势识别器附加到该 View 上。这样,如果该 View 被点击,则无需做出任何决定:点击位于正确的位置。

关于swift - 带条件的@IBSegueAction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56723275/

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