每当用户从一个页面滑动到另一个页面时,我都会调用以下函数(垂直分页):
func sendNotification (){
NotificationCenter.default.post(name: NSNotification.Name(rawValue: "stopVideo"), object: nil)
print("called")
}
目前,每当创建pageAfter或-before时都会调用该函数。用于"创建"的功能下一页/上一页看起来像这样(在这种情况下它是viewControllerAfter
):
func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
let currentIndexString = (viewController as! MyViewController).index
let currentIndex = indec.index(of: currentIndexString!)
//set if so that next page
if currentIndex! < indec.count - 1 {
let myViewController = MyViewController()
myViewController.index = indec[currentIndex! + 1]
sendNotification() //function is called
return myViewController
}
return nil
}
由于UIPageViewController稍微准备了以下页面并返回上一页也没有调用该函数(因为视图控制器不需要&#34;创建&#34;)我没有得到我想要的结果。我想知道是否有一个函数可以在完成动画时调用sendNotification()
。我发现很多关于跳转到另一页的问题,但没有关于我的问题。我非常感谢你的帮助!
答案 0 :(得分:4)
您可以使用UIPageViewControllerDelegate
功能
func pageViewController(_ pageViewController: UIPageViewController, willTransitionTo pendingViewControllers: [UIViewController])
func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool)
正如这些函数的名称所示,当用户滑动到PageViewController的另一个页面时,将调用第一个函数。
当转换完成时,将调用第二个,这意味着用户在动画之后看到下一页。
两者都可以检查页面之间的变化。
另外不要忘记检查第二个功能的completed
变量。如果用户开始滑动然后没有进入下一页(因为他在它或类似之前释放了手指),那么它是假的,你没有新的ViewController。
数组previousViewControllers
包含最近显示的控制器,其中previousViewControllers[0]
可能是之前显示的控制器。
有关详细信息,请查看documentation
答案 1 :(得分:1)
在function transportProfile() {
$type = 2;
$business = Business::where('type', $type)->get();
$location = Business::find(3)->locations;
echo $location;
return view('userProfile', compact('business', 'location'));
}
方法文档documentation中运行通知方法可能会对您有所帮助:
UIPageViewControllerDelegate