Сохранение состояния для контроллеров представления с пользовательскими делегатами или источниками данных
Я пытаюсь использовать iOS 6+ (мое приложение 7.0+), чтобы сохранить представление, которое представлено модально из другого View Controller. Как таковой, он имеет типичный образец отклонения контроллера модального представления:
TNTLoginViewController.h содержит@protocol TNTLoginViewControllerDelegate <NSObject>
- (void)TNTLoginViewControllerDismiss:(TNTLoginViewController *)controller;
@end
@interface TNTLoginViewControllerDelegate : NSObject
@interface TNTLoginViewController : UIViewController
@property (weak, nonatomic) IBOutlet id <TNTLoginViewControllerDelegate> delegate;
- (IBAction)getStarted:(id)sender;
@end
getStarted: реализация- (IBAction)getStarted:(id)sender
{
// Perform login
...
// Dismiss me
[self.delegate TNTLoginViewControllerDismiss:self];
}
TNTLoginViewControllerDismiss: метод на делегате, который представил модальное,- (void)TNTLoginViewControllerDismiss:(TNTLoginViewController *)controller
{
[self dismissViewControllerAnimated:YES completion:nil];
}
И все это работает как шарм! До сохранения государства. Проще говоря, я не знаю, как TNTLoginViewController сохранит свой делегат. Я понимаю, почему это не может: это просто указатель! Поэтому я попробовал различные способы получения делегата:
Восстановление класса: к сожалению, как метод класса,viewControllerWithRestorationIdentifierPath:coder:
не помогает мне указать на мой конкретный представление View Controller.Установите мое представление VC в качестве делегата моего модального VC в раскадровке: Xcode не позволил бы мне нарисовать это соединение, даже когда мой класс VC публично принялTNTLogingViewControllerDelegate>
Протокол в его заголовке. Это может быть отдельной проблемой, или это может быть запрещено.Используйте уровень приложения-делегатаapplication:viewControllerWithRestorationIdentifierPath:coder:
вернуть модальный контроллер представления с его делегатом, установленным для моего представления View Controller. Я должен быть в состоянии получить это представление VC от делегата приложения, но это может сработать.Сейчас я иду с № 3, но если есть лучшее решение, которое кто-то может порекомендовать, я был бы в восторге.
Установки, которые привели бы к подобным проблемам:
Настройка источника данных, скажем, для табличного представления.