在swift中从子控制器调用父控制器方法

时间:2015-02-10 09:20:16

标签: ios swift

我正在做一个简单的customtableview项目。我有viewController.swift和customcell.swift文件。我在viewcontroller文件中有一个方法。如何从customcell文件中调用该方法。将提供任何帮助。谢谢提前< / p>

1 个答案:

答案 0 :(得分:11)

以下是完成对象之间通信的几种方法。

  1. 您可以使用delegation pattern并基本上将viewcontroller设置为customcell实例的委托。然后,customecell对象将在需要时在委托上调用所需的方法。
  2. 您可以在viewcontroller对象中设置一个closure来调用所需的方法,然后将该闭包传递给customcell对象,以便在您想要从customcell实例执行viewcontroller的方法时使用。
  3. 您可以使用NSNotifications从customcell与viewcontroller进行通信。 customcell将“发布”通知,并且视图控制器(在注册“观察”特定通知之后)可以调用任何需要执行的方法。
  4. 还有其他方法可以解决这个问题,但这些是我想到的前三个方法。希望能给你一些关于如何继续的想法。

    以下是委托模式的一个简单示例。

    你的父母看起来像这样:

    protocol ParentProtocol : class
    {
        func method()
    }
    
    class Parent
    {
    
        var child : Child
    
        init () {
            child = Child()
            child.delegate = self
        }
    }
    
    extension Parent : ParentProtocol {
        func method() {
            println("Hello")
        }
    }
    

    你的孩子看起来像这样:

    class Child
    {
        weak var delegate : ParentProtocol?
    
        func callDelegate () {
            delegate?.method()
        }
    
    }