Как сделать объект делегата доступным через ViewController - PullRequest
0 голосов
/ 14 декабря 2011

Я пытаюсь сделать экземпляр моего AppDelegate доступным для всех методов в каждом имеющемся у меня ViewController.Если я пытаюсь объявить это с другими переменными класса, я получаю Initializer Element is not a compile-time constant.Если я объявлю это в методе внутри ViewController, я смогу его использовать.Я пытаюсь сохранить целые числа и числа с плавающей точкой в ​​свойствах, которые я настроил в AppDelegate (большой нет-нет, я знаю, но это проект для вводного класса, и я не собираюсь становиться слишком продвинутым, тем более что все, что мысделано до сих пор не соответствует парадигме MVC).Приложение использует панель инструментов для переключения между представлениями, используя ViewController приложения, чтобы загрузить другие ViewController как подпредставления.Я собирался поместить объявление AppDelegate и операторы обновления в метод ViewDidUnload каждого контроллера представления, но я не уверен, что представления выгружаются при каждом переключении (они переключаются путем удаления текущего представления из SuperView и загрузкиновый в качестве подпредставления с индексом 0).Что происходит с представлениями, которые в данный момент не просматриваются?Есть ли метод, который обнаруживает, что я мог бы реализовать объявление AppDelegate и обновлять в него?

Полагаю, в идеале я хотел бы иметь возможность получить доступ к объекту AppDelegate любым методом в моих ViewControllers, потому что у меня многоколичества обновляются повсеместно и хотели бы, чтобы эти количества обновлялись в значениях AppDelegates, как только они происходят, поскольку я не уверен, что то, что происходит с представлением, очищено из SuperView

Заранее всем спасибо

1 Ответ

2 голосов
/ 15 декабря 2011

Вы можете получить доступ к делегату приложения через [[UIApplication sharedApplication] delegate] из любого места в вашем приложении.

Вы не должны никогда создавать другую копию объекта самостоятельно.Система делает это для вас при запуске.

Что касается обнаружения изменений, вы можете переопределить viewDidDisappear метод UIViewController.(Вы правы - в общем случае они не будут выгружаться при переключении, и viewDidUnload не будет вызываться)

...