При инициализации контроллера представления из пера с использованием -initWithNibName:bundle:
фактическое представление и его подпредставления не разархивируются до тех пор, пока в первый раз не будет получен доступ к свойству view
контроллера представления, согласно документации:
Указанный вами файл пера не загружается сразу. Он загружается при первом обращении к представлению контроллера представления. Если вы хотите выполнить дополнительную инициализацию после загрузки nib-файла, переопределите метод viewDidLoad и выполните там свои задачи.
Попробуйте позвонить [mainMenu view]
сразу после инициализации с пера. Это увлажнит иерархию представления от кончика.
Однако, я думаю, я не понимаю, почему вы разархивируете контроллер представления из пера и вызываете один из его методов, который влияет на пользовательский интерфейс (т. Е. Скрывает или показывает кнопки), не передавая этот контроллер представления в контроллер навигации или представляя это модально. -changeSong:
- это метод для MainMenuController
, поэтому простой вызов его сразу после инициализации MainMenuController
не повлияет на кнопки, которыми он управляет.
(Не имеет отношения: вы устанавливаете mainMenu
на nil
перед его освобождением, что фактически означает, что mainMenu
никогда не может быть освобожден. Сначала позвоните -release
, а затем, по желанию, установите nil
.)