2017-10-29 12 views
0

Swift에 처음 오 셨습니다. 내 앱에서 배경 음악 재생을 제어하려고합니다. 현재 MainTabController에서 음악을 시작합니다. 나머지 VC를 탐색 할 때 예상대로 재생됩니다. 그러나 특정 VC가 표시되면이를 중단하고 싶습니다.(Swift2.3) 다른 클래스의 클래스 인스턴스에 액세스 중

MusicHelper 클래스를 설정했습니다. 내가 bgMusic의이 같은 인스턴스에 액세스하려고하지만 전무를 반환

class MainTabController: UINavigationController { 

var bgMusic : MusicHelper = MusicHelper() 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // other code 
    bgMusic.playBackgroundMusic("music_background", repeats: -1) 
} 
} 

: 내 MainTabController에 처음 음악을 시작하는 방법

class MusicHelper { 
static let sharedHelper = MusicHelper() 
var audioPlayer: AVAudioPlayer? 

func playBackgroundMusic(file : String, repeats : Int) { 
    let aSound = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource(file, ofType: "mp3")!) 
    do { 
     audioPlayer = try AVAudioPlayer(contentsOfURL:aSound) 
     audioPlayer!.numberOfLoops = repeats 
     audioPlayer!.prepareToPlay() 
     audioPlayer!.play() 
    } catch { 
     print("Cannot play the file") 
    } 
} 

func togglePlayer(){ 
    if((audioPlayer?.playing) == true){ 
     audioPlayer?.stop() 
    }else{ 
     audioPlayer?.play() 
    } 
} 
} 

. 나의 가정은 실제로 MainTabController의 새로운 인스턴스를 만들고 있다는 것입니다. 그렇다면 MusicHelper의 동일한 인스턴스에 액세스하려면 어떻게해야합니까?

class VideoViewController: OrientationLockedVC { 
    //Other code 
    var mVC : MainTabController = MainTabController() 

    func onImage() { 
     //other code 
     mVC.bgMusic.audioPlayer!.stop() 

     // other code 
    } 

} 

명백한 오류는 나타나지 않지만 중단 점을 설정하면 audioController가 없음을 분명히 알 수 있습니다.

감사

답변

0

public static var audioPlayer: AVAudioPlayer?

에 대한 변경 var audioPlayer: AVAudioPlayer?이 대부분 일

if MusicHelper.audioPlayer != nil{ 
MusicHelper.audioPlayer.stop() 
} 
+0

전화. 감사. 그것을 public static으로 변경했습니다. 나머지 기능에 MusicHelper.audioPlayer를 추가해야했습니다. 당신이 어떻게 제안했는지 부르지 못했습니다. MusicHelper (bgMusic)의 인스턴스를 통해 호출해야했습니다. 또한 sfx를 트리거하는 데이 방법을 사용하고 있습니다. 차이가 있는지 여부는 확실하지 않지만 관계없이 결국 작동하게되었습니다. 다시 감사합니다. – Ziast

+0

당신은 환영합니다;) 이 링크에서는 정적 인 메서드와 변수에 대해 자세히 설명합니다. https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Properties.html – cwilliamsz