Как получить что-то в виду, загрузил ли вызов только один раз? - PullRequest
0 голосов
/ 25 января 2012

Я пытаюсь сделать игру для iPhone с фоновой музыкой. Так вот как это выложено: У меня есть главное меню с музыкой, работающей в фоновом режиме через AVAudioPlayer (я создал собственный метод, который вызывается при каждой загрузке представления). У меня есть кнопка «about», когда вы нажимаете на нее «addSubview: aboutView», и это прекрасно, но затем, когда я нажимаю кнопку «back», которая «addSubview: mainView», она возвращается в главное меню, но воспроизводит ее музыкальная дорожка, поверх той, которая уже играет. Я пытался сделать int, что ++ каждый раз, когда viewDidLoad вызывается, то в if (someInt> 1) {}, но это int забывает свое значение каждый раз, поэтому он все еще дублирует музыку. Помогите! Я знаю, что это просто, но я не могу решить это, это только один из тех дней.

Ответы [ 3 ]

0 голосов
/ 25 января 2012

Возможно, вам придется реструктурировать ваше приложение. Я бы положил AVAudioPlayer в одноэлементную оболочку (назовем это MusicPlayer ). Синглтон будет следить за тем, чтобы дополнительные экземпляры AVAudioPlayer не создавались. Если хотите, я могу опубликовать пример кода из моего проекта, хотя он использует AVPlayer.

0 голосов
/ 25 января 2012

Вы должны реструктурировать свое приложение.

Например, это может быть один:

App delegate
   |_ App Main View Controller
       |_ AVAudioPlayer
       |_ UINavigationController
            |_ Start screen
            |_ Screen #1
            |_ Screen #2
            |_ etc.
0 голосов
/ 25 января 2012

Если вы addSubview, возможно, вы снова создаете свой основной вид, поэтому он снова делает viewDidLoad.Сначала вы должны построить хорошую иерархию контроллеров логического представления, вероятно, на основе UINavigationController, если у вас есть цепочки представлений, которые формируют ветви.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...