Передать данные в AppDelegate - PullRequest
1 голос
/ 03 марта 2012

Интересно, как передать данные обратно в AppDelegate. Допустим, у меня есть эта схема

AppDelegate - > RootViewController -> FirstViewController -> SecondViewController.

SecondViewController содержит данные, которые должны быть сохранены при вызове метода AppDelegate applicationWillTerminate. Я знаю, что могу использовать синглтон для обмена данными в приложении, но мне не нравится этот подход. Уведомление не будет работать в этом сценарии.

Что вы можете мне порекомендовать?

Ответы [ 2 ]

4 голосов
/ 03 марта 2012

это должен получить этот делегат.

AppDelegate * delegate =(AppDelegate*) [UIApplication sharedApplication].delegate
[delegate callSomeMethod:someData];
1 голос
/ 03 марта 2012

Другое предложение для вас.В вашем классе AppDelegate.h вы можете создать метод класса, подобный следующему:

+ (AppDelegate *)getAppDelegate;

, а затем в вашем AppDelegate.m

+ (AppDelegate *)getAppDelegate
{
    return (AppDelegate *)[[UIApplication sharedApplication] delegate];
}

Теперь вы можете получить доступ к этому делегату, где вы хотитекак (после импорта AppDelagate.h).

AppDelegate* sharedDelegate = [AppDelegate getAppDelegate];

Более чистым способом было бы создать категорию и поместить туда код.

Теперь мой вопрос: зачем вамсохранить данные внутри делегата?Может быть, вы могли бы использовать синглтон вместо этого.Для получения дополнительной информации см. singletons-appdelegates-and-top-level .

Надеюсь, это поможет.

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