【问题标题】:How can I make my view controller setted as it's own delegate?如何将我的视图控制器设置为它自己的委托?
【发布时间】:2017-07-17 07:56:04
【问题描述】:

如果需要登录,我有需要弹出登录的“帮助”单例类。我想捕获登录视图控制器的返回,所以我在我的 LoginViewController 中实现了一个协议,并且需要在单例类中设置我的委托,但是当我尝试这样做时:

loginController.delegate = self

Xcode 尝试将其更正为:

loginController.delegate = self as! LoginViewControllerDelegate

我的 LoginViewController.swift 文件中的协议:

protocol LoginViewControllerDelegate {
    func loginViewControllerDidReturn(identifier: String)
}

有什么想法吗?

【问题讨论】:

    标签: ios swift


    【解决方案1】:

    确保您的 LoginViewController 定义是:

    class LoginViewController: UIViewController, LoginViewControllerDelegate {
    ...
    }
    

    这会通知编译器你的类实现了协议。

    你也可以做一个扩展来实现协议:

    extension LoginViewController: LoginViewControllerDelegate {
        // Implement here the func of your protocol
    }
    

    【讨论】:

    • 这解决了问题。我应该如何/在哪里实施我的协议?我一直将它们添加到我的视图控制器 .swift 文件的顶部。这不是正确的地方吗?
    • 您可以在任何地方进行操作。对于一个委托,我通常会和你做同样的事情:在类的顶部,它是它的委托
    • 但这不是您正在处理的单例模式设计,它是一个委托。我将编辑您不相关的标题
    【解决方案2】:

    'self' 是否符合 LoginViewControllerDelegate 协议?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多