を使用している間、私はストップスタート機能持つ別のビューコントローラ上の音声を停止します。ViewController3でプレイとViewController1ではページのViewController
// Controls Play settings
func isplay(){
audioPlayerVC2.play()
}
func stop(){
audioPlayerVC2.stop()
}
:私はストップスタート機能を持っているViewController2で
// Controls Play settings
func isplay(){
audioPlayerVC1.play()
}
func stop(){
audioPlayerVC1.stop()
}
を私は停止開始関数を持っています:
// Controls Play settings
func isplay(){
audioPlayerVC3.play()
}
func stop(){
audioPlayerVC3.stop()
}
In ViewController4私はstop start func
// Controls Play settings
func isplay(){
audioPlayerVC4.play()
}
func stop(){
audioPlayerVC4.stop()
}
audioPlayerVCを使用すると、各ビューコントローラーでバックグラウンドミュージックを停止して開始できます。私が探しているのは、これを私のページビューコントローラーに組み込むことです。ユーザーがビューコントローラー間で左右にスワイプすると、音楽はその特定のビューコントローラーを開始および停止します。私は、ページビューコントロールでif else文を作成する必要があると思います。なぜなら、音楽はすべてのビューコントローラから現時点で再生されるからです。ここでpageviewcontrollerのためのコードです:ユーザーがあるページから別のページに移行しているとき
import UIKit
class PageViewController: UIPageViewController, UIPageViewControllerDelegate, UIPageViewControllerDataSource {
var pageControl = UIPageControl()
// MARK: UIPageViewControllerDataSource
lazy var orderedViewControllers: [UIViewController] = {
return [self.newVc(viewController: "View1"),
self.newVc(viewController: "View2"),
self.newVc(viewController: "View3"),
self.newVc(viewController: "View4")]
}()
override func viewDidLoad() {
super.viewDidLoad()
self.dataSource = self
self.delegate = self
// This sets up the first view that will show up on our page control
if let firstViewController = orderedViewControllers.first {
setViewControllers([firstViewController],
direction: .forward,
animated: true,
completion: nil)
}
}
func newVc(viewController: String) -> UIViewController {
return UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: viewController)
}
// MARK: Delegate methords
func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool) {
let pageContentViewController = pageViewController.viewControllers![0]
self.pageControl.currentPage = orderedViewControllers.index(of: pageContentViewController)!
}
// MARK: Data source functions.
func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
guard let viewControllerIndex = orderedViewControllers.index(of: viewController) else {
return nil
}
let previousIndex = viewControllerIndex - 1
// User is on the first view controller and swiped left to loop to
// the last view controller.
guard previousIndex >= 0 else {
return orderedViewControllers.last
// Uncommment the line below, remove the line above if you don't want the page control to loop.
// return nil
}
guard orderedViewControllers.count > previousIndex else {
return nil
}
return orderedViewControllers[previousIndex]
}
func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
guard let viewControllerIndex = orderedViewControllers.index(of: viewController) else {
return nil
}
let nextIndex = viewControllerIndex + 1
let orderedViewControllersCount = orderedViewControllers.count
// User is on the last view controller and swiped right to loop to
// the first view controller.
guard orderedViewControllersCount != nextIndex else {
return orderedViewControllers.first
// Uncommment the line below, remove the line above if you don't want the page control to loop.
// return nil
}
guard orderedViewControllersCount > nextIndex else {
return nil
}
return orderedViewControllers[nextIndex]
}
}