将 Swift 中的另一个 viewController 的 UIScrollView 偏移量更改为顶部 4

Change UIScrollView Offset to top from another viewController in Swift 4

我有 mainViewController,里面有 scrollView,我有 secondViewController 我想在需要时将 scrollViewsecondViewController 偏移到顶部试试 NSNotificationCenter 给我 ;

: unrecognized selector sent to instance 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)


    }

你的 "goTop" 函数的定义是错误的:

而不是

func gotop(){
  //do your stuff
}

试试这个:

func gotop(notification : NSNotification){
   //do your stuff
}

如果这能解决您的问题,请告诉我。

我在我的项目中使用了以下代码来添加通知:

NotificationCenter.default.addObserver(self, selector: #selector(YourViewController.gotop), name: NSNotification.Name(rawValue: "gotop"), object: nil)

尝试一下它是否适用于您的场景。

检查您的 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)
}