Ios 在视图控制器中使用选择器,并在父视图控制器中使用objc公开的函数

Ios 在视图控制器中使用选择器,并在父视图控制器中使用objc公开的函数,ios,swift,selector,Ios,Swift,Selector,我正在创建一个页面视图控制器,我想在其中创建两个存在于页面视图控制器中的objc公开函数: @objc func nextPage() { // navigates to next view controller } @objec func previousPage() { // navigates to previous view controller } 从其中一个视图控制器的PageViewController显示,PageOneViewController,我想将此功能与操作

我正在创建一个页面视图控制器,我想在其中创建两个存在于页面视图控制器中的objc公开函数:

@objc func nextPage() {
  // navigates to next view controller
}

@objec func previousPage() {
  // navigates to previous view controller
}
从其中一个视图控制器的PageViewController显示,PageOneViewController,我想将此功能与操作上的选择器一起使用:

var pageViewController: PageViewController? {
    guard let parent = self.parent as? PageViewController else {
        return nil
    }
    return parent
}

button.addTarget(self, action: #selector(self.pageViewController?.nextPage), for: .touchUpInside)
但是,当我执行此操作时,会出现错误:
”-[MyProject.PageOneViewController nextPage:]:无法识别的选择器发送到实例0x…


选择器是否仅在同一类中工作?您不能这样使用选择器功能吗?我主要不想在PageViewController显示的所有视图控制器中编写
nextPage
函数。

您在
addTarget
中指定的
目标是必须包含将被调用的
操作的类

更改:

button.addTarget(self, action: #selector(self.pageViewController?.nextPage), for: .touchUpInside)
致:

请注意,现在目标是
self.pageViewController
,操作是
pageViewController
类的
nextPage
方法

button.addTarget(self.pageViewController, action: #selector(PageViewController.nextPage), for: .touchUpInside)