gpt4 book ai didi

ios - 不能使用在 Swift 中使用的 Objective-C 中定义的 unwind segue

转载 作者:行者123 更新时间:2023-11-29 11:44:51 24 4
gpt4 key购买 nike

我有一个模态视图 Controller ,它位于我从不同 Controller 呈现的导航 Controller 内,并且基于不同的上下文,它应该返回到不同的 Controller 。

基本上,无论谁实现了 segue 标识符,都应该是此流程的返回点。

我有以下流程以模态方式呈现整个流程:

A( objective-C )-> B( objective-C )-> C(Swift)-> D(Swift)

A、B、C实现了相同的segue方法。

A 类和 B 类实现了 Objective-C 版本:

- (IBAction)unwindToRootTabBarViewController:(UIStoryboardSegue *)unwindSegue {}

虽然 C 类实现了 Swift 版本:

override func canPerformUnwindSegueAction(_ action: Selector, from fromViewController: UIViewController, withSender sender: Any) -> Bool {
return true
}

@IBAction public func unwindToRootTabBarViewController(segue: UIStoryboardSegue) {}

当试图展开到用 Objective-C 编写的 C 类时,它崩溃了,因为我找不到该方法,即使它在那里:

** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[App.ClassCViewController unwindToRootTabBarViewController:]: unrecognized selector sent to instance 0x7ff035c634b0'

知道为什么会发生这种情况吗?

最佳答案

我想了想,将参数类型更改为方法:

@IBAction public func unwindToRootTabBarViewController(segue: UIStoryboardSegue){}

@IBAction public func unwindToRootTabBarViewController(_: UIStoryboardSegue){}

成功了!

我认为这与 Swift 和 Objective-C 处理方法签名的方式有关。

关于ios - 不能使用在 Swift 中使用的 Objective-C 中定义的 unwind segue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44461392/

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