When I press a button, then press another one, the sounds overlap. How can I fix that so the first sound stops when another one is pressed?
- (void)playOnce
The code you've posted will only play one sound, the first sound sent to the method.
If you want to only play one changeable sound, after stoping the player, release theAudio and then set the new sound.