在具有位于父视图控制器中的 objc 公开函数的视图控制器中使用选择器
Using Selectors in a View Controller with objc exposed functions located in the Parent View Controller
我正在创建一个页面视图控制器,我想在其中创建两个存在于 PageViewController 中的 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:]: unrecognized selector sent to instance 0x....
选择器是否只能在同一个 class 中工作?你不能这样使用选择器功能吗?我主要不想在 PageViewController 显示的所有视图控制器中编写 nextPage
函数。
你在addTarget
中指定的target
是class,必须包含将被调用的action
。
变化:
button.addTarget(self, action: #selector(self.pageViewController?.nextPage), for: .touchUpInside)
至:
button.addTarget(self.pageViewController, action: #selector(PageViewController.nextPage), for: .touchUpInside)
请注意,现在目标是 self.pageViewController
,操作是 PageViewController
class 的 nextPage
方法。
我正在创建一个页面视图控制器,我想在其中创建两个存在于 PageViewController 中的 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:]: unrecognized selector sent to instance 0x....
选择器是否只能在同一个 class 中工作?你不能这样使用选择器功能吗?我主要不想在 PageViewController 显示的所有视图控制器中编写 nextPage
函数。
你在addTarget
中指定的target
是class,必须包含将被调用的action
。
变化:
button.addTarget(self, action: #selector(self.pageViewController?.nextPage), for: .touchUpInside)
至:
button.addTarget(self.pageViewController, action: #selector(PageViewController.nextPage), for: .touchUpInside)
请注意,现在目标是 self.pageViewController
,操作是 PageViewController
class 的 nextPage
方法。