Как сделать объект делегата доступным через ViewController
Я пытаюсь сделать экземпляр моего AppDelegate доступным для всех методов в каждом ViewController, который у меня есть. Если я пытаюсь объявить это с другими переменными класса, я получаю Initializer Element is not a compile-time constant
, Если я объявлю это в методе внутри ViewController, я смогу его использовать. Я пытаюсь сохранить целые числа и числа с плавающей точкой в свойствах, которые я настроил в AppDelegate (большой нет-нет, я знаю, но это проект для вводного класса, и я не собираюсь становиться слишком продвинутым, тем более что все, что мы сделано до сих пор не соответствует парадигме MVC). Приложение использует панель инструментов для переключения между представлениями, используя ViewController приложения, чтобы загрузить другие ViewController как подпредставления. Я собирался поместить объявление AppDelegate и операторы обновления в метод ViewDidUnload каждого контроллера представления, но я не уверен, что представления выгружаются всякий раз, когда они переключаются (они переключаются путем удаления текущего представления из SuperView и загрузки новый в качестве подпредставления с индексом 0). Что происходит с представлениями, которые в данный момент не просматриваются? Есть ли метод, который обнаруживает, что я мог бы реализовать объявление AppDelegate и обновлять в?
Полагаю, в идеале я хотел бы иметь возможность доступа к объекту AppDelegate любым методом в моих ViewControllers, потому что у меня много обновлений во всем, и я хотел бы, чтобы эти количества обновлялись в значениях AppDelegates, как только они происходят, так как Я не уверен, что происходит с View очищен от SuperView
Заранее всем спасибо
1 ответ
Вы можете получить доступ к вашему делегату через [[UIApplication sharedApplication] delegate]
из любого места в вашем приложении.
Вы никогда не должны создавать другую копию объекта самостоятельно. Система делает это для вас при запуске.
Что касается обнаружения изменений, вы можете переопределить viewDidDisappear
метод UIViewController
, (Вы правы - в общем, они не будут выгружаться при переключении, и viewDidUnload
не будет называться)