2017-03-03 2 views
-6

Ich arbeite gerade an einer Audio-Streaming-Anwendung für iOS und ich bin neu in Swift. Ich kann momentan Songs aus der Datenbank mit JSON-Serialisierung ziehen und dann Buttons für jeden einzelnen Song erstellen und abspielen, aber ich kann nicht herausfinden, wie man sie pausiert?Anhalten eines JSON-Arrays

Hier ist mein Code:

import UIKit 
import AVKit 
import AVFoundation 


class ViewController: UIViewController { 

    var songArray: [Array<String>] = [] //array to contain song names and filepaths 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 

     //connect to website 
     let url = URL(string:"http://cgi.soic.indiana.edu/~team22/SongData.php") 
     let task = URLSession.shared.dataTask(with: url!) { (data, response, error) in 
      if error != nil 
      { 
       print("error") 
      } 
      else 
      { 
       if let content = data 
       { 
        do 
        { 
         //download JSON data from php page, display data 
         let JSON = try JSONSerialization.jsonObject(with: content, options: JSONSerialization.ReadingOptions.mutableContainers) as! [[String]] 
         print(JSON) 

         //Make buttons with JSON array 
         var buttonY: CGFloat = 20 
         for song in JSON { 
          //add information to array 
          self.songArray.append(song) 
          let SongButton = UIButton(frame: CGRect(x: 50, y: buttonY, width: 250, height: 30)) 
          buttonY = buttonY + 50 // 50px spacing 

          SongButton.layer.cornerRadius = 10 //Edge formatting for buttons 

          SongButton.backgroundColor = UIColor.darkGray //Color for buttons 

          SongButton.setTitle("\(song[0])", for: UIControlState.normal) //button title 

          SongButton.titleLabel?.text = "\(song[0])" // set title label 

          SongButton.addTarget(self,action: #selector(self.songButtonPressed(_:)), for: UIControlEvents.touchUpInside) //button press/response 

          self.view.addSubview(SongButton) // adds buttons to view 
         } 
        } 
        catch 
        { 

        } 
       } 
      } 
     } 
     task.resume() 
     print(songArray) 

    } 


    func songButtonPressed(_ sender:UIButton!) { // Streaming function for buttons when pressed 
     for song in songArray { 
      if "\(song[0])" == sender.titleLabel?.text { //compare loop element to name of button pressed 



       let URL = NSURL(string: song[1]) //plug loop element into audio player 
       let player = AVPlayer(url: URL! as URL) 
       let playerLayer = AVPlayerLayer(player: player) 
       playerLayer.frame = self.view.bounds 
       self.view.layer.addSublayer(playerLayer) 
       player.play() 
      } 
     } 
    } 
} 
+6

Das hat nichts mit "pausieren ein JSON-Array" zu tun Dies ist mit Pause einige Medien zu tun – Fogmeister

+0

Google "Audio-swift ios Pause". –

Antwort

0

Zum Apple-docs und AVPlayer nachschlagen. Es gibt eine .pause() Funktion. So einfach ist das. Ihr anderes Problem ist, dass Sie keine Möglichkeit haben, auf diesen Player außerhalb des Bereichs songButtonPressed zuzugreifen, also müssen Sie eine Variable in Ihrem viewController erstellen (dh unter Ihrer var songArray...), damit jemand, der die Pause-Taste drückt, self.player.pause() sagen kann .

Link zu docs. https://developer.apple.com/reference/avfoundation/avplayer

Verwandte Themen