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

标签 swift delegation

我不确定这是否是 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/

相关文章:

swift 2错误: Solve "Type of expression is ambiguous without more context"

ios - 为什么授权可以帮助我们避免依赖?

objective-c - NSURLSession 委托(delegate) : How to implement my custom SessionDelegate class accordingly?

objective-c - 什么是 Swift 中的面向协议(protocol)编程?它带来什么附加值?

json - 从 GoogleApiBooks 解析 JSON

swift - 在scenekit中设置游戏场景时出错

ios - Swift:while 循环中的 UIAlertController

ios - Swift - UISlider 的自定义控件

ios - 委托(delegate)未调用 Swift 协议(protocol)方法

swift - 我的委托(delegate)函数没有在 Swift 中被调用