gpt4 book ai didi

swift - 当委托(delegate)是 Swift 中的 UIViewController 时使用委托(delegate)的方法

转载 作者:搜寻专家 更新时间:2023-11-01 05:43:14 27 4
gpt4 key购买 nike

我不确定这是否是 Xcode 6 Swift 特定的问题,但就是这样。

我有两个类,MyViewController 和 UtilViewController。 UtilViewController 有一个 UIViewController 类型的委托(delegate)属性,因为 UtilViewController 旨在供我的应用程序的所有 View Controller 使用。它还有一个函数 createOrder(),只会被 MyViewController 调用。因为此函数只会被 MyViewController 调用,所以在 createOrder() 内部有一行调用由 MyViewController 声明的函数,如下所示

self.delegate!.methodInMyViewController()

但是这会在 UtilViewController 中引发错误

'UIViewController' does not have a member named 'methodInMyViewController'

如何保留 UIViewController 委托(delegate)的模块化,同时又能从我自己的 View Controller 调用方法,它们是 UIViewController 的子类?

最佳答案

您可以将您的委托(delegate)转换为 MyViewController 以告诉编译器它实际上是一个 MyViewController 并且可以调用该方法。

(self.delegate! as MyViewController).methodInMyViewController()

由于委托(delegate)可能并不总是 MyViewController,您可能需要在转换之前检查它是否是:

if self.delegate! is MyViewController{
(self.delegate! as MyViewController).methodInMyViewController()
}

关于swift - 当委托(delegate)是 Swift 中的 UIViewController 时使用委托(delegate)的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24985106/

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