如何从具有不同类的不同视图控制器调用函数

时间:2016-09-05 14:32:26

标签: ios swift xcode nscoder

当你按下屏幕我试图获得一个功能,在另一个视图控制器被称为usaully我会做的      viewControllerFuncIsIn()。NameOfFunc() 但是因为具有我试图调用的函数的视图控制器类是SCNView。它使用ns编码器给我这个错误,因为目前在Skscene中 enter image description here 我试图调用的函数位于viewdidload(不在其中)正下方的一个名为Extra1的类中。

以下评论更新:

 Extra1(coder:NSCoder())!.see()

enter image description here

2 个答案:

答案 0 :(得分:2)

小例子:

当连接是一对一时使用委托。

代表:

创建协议:

protocol TestViewControllerDelegate {
  func finishTask(sender: TestViewController)
}

为委派创建参考。它应该很弱,这很重要。

weak var delegate:TestViewControllerDelegate?

退出了你的课堂。

extension MainViewController: TestViewControllerDelegate {
  func finishTask(sender: TestViewController) {

  }
}

致电代表:

delegate?. finishTask(self)

当连接是一对多时使用通知。

通知:

添加观察员以获取通知。

 NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(ClassName.test), name:"NotificationIdentifier", object: nil)

发布通知。

NSNotificationCenter.defaultCenter().postNotificationName("NotificationIdentifier", object: nil)

答案 1 :(得分:0)

我喜欢我的问题的答案

func mySelector(elem: AnyObject) {
    Extra1().see()
}

NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.mySelector), name: "see", object: nil)

NSNotificationCenter.defaultCenter().postNotificationName("see", object: self)