如何将我的视图控制器设置为它自己的委托?

Posted

技术标签:

【中文标题】如何将我的视图控制器设置为它自己的委托?【英文标题】: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)

有什么想法吗?

【问题讨论】:

【参考方案1】:

确保您的 LoginViewController 定义是:

class LoginViewController: UIViewController, LoginViewControllerDelegate 
...

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

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

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

【讨论】:

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

'self' 是否符合 LoginViewControllerDelegate 协议?

【讨论】:

以上是关于如何将我的视图控制器设置为它自己的委托?的主要内容,如果未能解决你的问题,请参考以下文章

将委托从 ViewController 分离到自己的类

如何跨多个视图控制器引用同一个类的实例?

如何使用自己的委托方法添加子视图?

数据源和委托给自己到底做了啥?

如何设置滚动视图委托? [关闭]

UIPageViewController。如何设置自定义 UIViewControllers 数组