2015-03-04 3 views
0

Я хочу разработать небольшое приложение. Но я пытаюсь сделать Musik off Button с пары дней. Может быть, ты поможешь мне. Я начинаю вот так.Как я запрограммировал Musik и на кнопке?

func MusikAN (sender: UIButton!) { 
    MusikEinUndAusSchalten.setBackgroundImage(MusikEin, forState: .Normal) 
    MusikEinUndAusSchalten.addTarget(self, action: "MusikAus:", forControlEvents: .TouchUpInside) 
} 
func MusikAus (sender: UIButton!){ 
    MusikEinUndAusSchalten.setBackgroundImage(MusikAus, forState: .Normal) 
    MusikEinUndAusSchalten.addTarget(self, action: "MusikAN:", forControlEvents: .TouchUpInside) 
    audioPlayer.stop() 
} 

И я делаю Musik с этой функцией.

func Musik (sender: UIButton) { 

    var alertsound = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("Blub1", ofType: "mp3")!) 

    AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, error: nil) 
    AVAudioSession.sharedInstance().setActive(true, error: nil) 

    var error: NSError? 
    audioPlayer = AVAudioPlayer(contentsOfURL: alertsound, error: &error) 
    audioPlayer.prepareToPlay() 
    audioPlayer.play() 

} 

Но это не работает. Звук идет. Когда вы нажимаете кнопку «MusikAus», вы не должны слушать музыку, а когда вы нажимаете кнопку «MusikAn», вам нужно снова услышать музыку.

+0

- функция MusikAus, вызываемая при нажатии кнопки выключения? – Steve

ответ

3

Плохая идея вызвать addTarget каждый раз, когда вы нажимаете кнопку (это ADD, а не SET). Как и во втором нажатии, вы вызовете методы BOTH, возможно, даже несколько раз, сразу. Поэтому либо вызывайте removeTarget перед добавлением нового или лучше установленным, и используйте выбранное состояние кнопки для переключения между двумя методами. Кроме того, метод MusikAN даже не вызывает что-то на аудиоплеере, поэтому как он должен продолжать играть, после того как вы его остановили?

0

Я обновляю код, возможно, сейчас он прав.

func MusikAN (sender: UIButton!) { 
    MusikEinUndAusSchalten.setBackgroundImage(MusikEin, forState: .Normal) 
    MusikEinUndAusSchalten.removeTarget(self, action: "MusikAn:", forControlEvents: .TouchUpInside) 
    MusikEinUndAusSchalten.addTarget(self, action: "MusikAus:", forControlEvents: .TouchUpInside) 
    audioPlayer.start() 
} 
func MusikAus (sender: UIButton!){ 
    MusikEinUndAusSchalten.setBackgroundImage(MusikAus, forState: .Normal) 
    MusikEinUndAusSchalten.removeTarget(self, action: "MusikAus:", forControlEvents: .TouchUpInside) 
    MusikEinUndAusSchalten.addTarget(self, action: "MusikAN:", forControlEvents: .TouchUpInside) 
    audioPlayer.stop() 
} 
+0

так он работает сейчас? – Alf