我有mainViewController
,里面有scrollView
我有secondViewController
当我想尝试时,我想将scrollView
偏移更改为secondViewController
的顶部与NSNotificationCenter
给了我;
:无法识别的选择器发送到实例0x7ff83e024200'
我该如何解决? 我的代码如下。
mainViewController
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: "gotop:", name: NSNotification.Name(rawValue: "gotop"), object: nil)
}
func gotop(){
scrollView.setContentOffset(CGPoint(x:0, y:0), animated: false)
}
secondViewController
@IBAction func goButton (sender : UIButton){
NotificationCenter.default.post(name: NSNotification.Name(rawValue: "gotop"), object: nil)
}
答案 0 :(得分:2)
我在项目中使用了以下代码来添加通知:
NotificationCenter.default.addObserver(self, selector: #selector(YourViewController.gotop), name: NSNotification.Name(rawValue: "gotop"), object: nil)
尝试在您的方案中有效。
答案 1 :(得分:2)
检查你的addObserver代码,选择器应该具有以下签名
NotificationCenter.default.addObserver(self, selector: #selector(MainViewController.goTop(notification:)), name: Notification.Name("gotop"), object: nil)
收到通知的方法处理程序:
func goTop(notification: Notification){
scrollView.setContentOffset(CGPoint(x:0, y:0), animated: false)
}
用于发布通知
NotificationCenter.default.post(name: Notification.Name("gotop"), object: nil)
删除拒绝通知
deinit {
NotificationCenter.default.removeObserver((self, name: Notification.Name("gotop"), object: nil)
}
答案 2 :(得分:1)
你的“goTop”函数的定义是错误的:
而不是
func gotop(){
//do your stuff
}
试试这个:
func gotop(notification : NSNotification){
//do your stuff
}
让我知道这是否可以解决您的问题。