(Swift2.3)从另一个 class 访问 class 实例
(Swift2.3)Accessing class instance from another class
Swift 的新手。我正在尝试控制我的应用程序上背景音乐的播放。我目前在我的 MainTabController 中开始播放音乐。当我浏览其余 VC 时,它按预期播放。但是,我希望它在显示某些 VC 时停止。
我设置了 MusicHelper class。
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 中启动音乐的:
class MainTabController: UINavigationController {
var bgMusic : MusicHelper = MusicHelper()
override func viewDidLoad() {
super.viewDidLoad()
// other code
bgMusic.playBackgroundMusic("music_background", repeats: -1)
}
}
我正在尝试访问同一个 bgMusic 实例,但它返回 nil。我的假设是我实际上正在创建 MainTabController 的新实例?如果是这样,我将如何访问同一 MusicHelper 实例?
class VideoViewController: OrientationLockedVC {
//Other code
var mVC : MainTabController = MainTabController()
func onImage() {
//other code
mVC.bgMusic.audioPlayer!.stop()
// other code
}
}
我没有收到任何明确的错误,但如果我设置断点,我可以清楚地看到 audioController 为 nil。
谢谢
将 var audioPlayer: AVAudioPlayer?
更改为 public static var audioPlayer: AVAudioPlayer?
并打电话给
if MusicHelper.audioPlayer != nil{
MusicHelper.audioPlayer.stop()
}
Swift 的新手。我正在尝试控制我的应用程序上背景音乐的播放。我目前在我的 MainTabController 中开始播放音乐。当我浏览其余 VC 时,它按预期播放。但是,我希望它在显示某些 VC 时停止。
我设置了 MusicHelper class。
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 中启动音乐的:
class MainTabController: UINavigationController {
var bgMusic : MusicHelper = MusicHelper()
override func viewDidLoad() {
super.viewDidLoad()
// other code
bgMusic.playBackgroundMusic("music_background", repeats: -1)
}
}
我正在尝试访问同一个 bgMusic 实例,但它返回 nil。我的假设是我实际上正在创建 MainTabController 的新实例?如果是这样,我将如何访问同一 MusicHelper 实例?
class VideoViewController: OrientationLockedVC {
//Other code
var mVC : MainTabController = MainTabController()
func onImage() {
//other code
mVC.bgMusic.audioPlayer!.stop()
// other code
}
}
我没有收到任何明确的错误,但如果我设置断点,我可以清楚地看到 audioController 为 nil。
谢谢
将 var audioPlayer: AVAudioPlayer?
更改为 public static var audioPlayer: AVAudioPlayer?
并打电话给
if MusicHelper.audioPlayer != nil{
MusicHelper.audioPlayer.stop()
}