Когда пользователь выбирает сегмент, отображаются неправильные данные из списка.IOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Когда пользователь выбирает сегмент, отображаются неправильные данные из списка.

Сообщение Anonymous »

В моем приложении есть функция, которая позволяет переключаться между LastSong и FamousSong в зависимости от исполнителя в зависимости от того, выбирает ли пользователь сегмент в UISegmentControl. Когда я запускаю свое приложение и выбираю LastSong, все в порядке. Но когда я выбираю FamousSong, воспроизводится случайная песня, а не тот же исполнитель.
Это мой код:

Код: Выделить всё

import UIKit
import AVKit
import AVFoundation
import SwiftyGif

class SongViewController: UIViewController {

@IBOutlet weak var btnStart: UIButton!
@IBOutlet weak var imgGif: UIImageView!
@IBOutlet weak var lbName: UILabel!
@IBOutlet weak var displayShow: UIView!
@IBOutlet weak var segControl: UISegmentedControl!

let loadPlist = Loading()
var currentSongName: String = ""
var player: AVPlayer?
var playerLayer: AVPlayerLayer?
var lastSongs=[String]()
var famousSongs=[String]()
var artistNames=[String]()

var currentSongs: [String] = []
var index=0

override func viewDidLoad() {
super.viewDidLoad()

print("song name:",currentSongName)
print(index)

playMV(songName: currentSongName)

do {
let gif = try UIImage(gifName: "music.gif")
imgGif.setGifImage(gif, loopCount: -1)
} catch {
print("Error loading GIF: eRRoR!!!!")
}

}

func takeData() {
lastSongs=loadPlist.load(file: "lastSong")
famousSongs=loadPlist.load(file: "famousSong")
artistNames=loadPlist.load(file: "artistName")
}

@IBAction func segControlChanged(_ sender: UISegmentedControl) {
let selectedIndex = sender.selectedSegmentIndex
if selectedIndex == 0 {
currentSongs = famousSongs
} else {
currentSongs = lastSongs
}

lbName.text = currentSongs.first ?? ""

currentSongName = currentSongs.first ?? ""

playMV(songName: currentSongName)
}

@IBAction func btnStart(_ sender: UIButton) {
if imgGif.isAnimatingGif() {
imgGif.stopAnimatingGif()
sender.setTitle("Play", for: .normal)
} else {
imgGif.startAnimatingGif()
sender.setTitle("Stop", for: .normal)
}
}

@IBAction func btnPlay(_ sender: Any) {
if !currentSongName.isEmpty {
player?.play()
}
}

@IBAction func btnPause(_ sender: Any) {
if let player = player, player.rate != 0 {
player.pause()
} else {
player?.play()
}
}

@IBAction func btnStop(_ sender: Any) {
player?.pause()
player?.seek(to: CMTime.zero)
}

func playMV(songName: String) {
let fullSongName = "\(songName).mp4"
print("Song:",fullSongName)

if let path = Bundle.main.path(forResource: songName, ofType: "mp4") {
let url = URL(fileURLWithPath: path)
player = AVPlayer(url: url)

// Remove any existing player layer
playerLayer?.removeFromSuperlayer()

// Create a new player layer
playerLayer = AVPlayerLayer(player: player)
playerLayer?.frame = displayShow.bounds // Set frame to match displayShow
playerLayer?.videoGravity = .resizeAspectFill // Adjust video gravity

// Add player layer to displayShow
displayShow.layer.addSublayer(playerLayer!)

// Start playing the video
player?.play()

// Update label to show currently playing song
lbName.text = songName
currentSongName = songName // Update the current song name for reference

} else {
print("Can't find Video: \(fullSongName)")
}
}
}
Как исправить этот код?


Подробнее здесь: https://stackoverflow.com/questions/792 ... -a-segment
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «IOS»