У меня есть иерархия UIViewControllers, которые были представлены с использованием методов currentModalViewController.UIViewController отклоняет несколько контроллеров (iOS 4.3 и выше)
У меня есть singleton, которые захватывают все представленные контроллеры представлений массиву.
Например я представил контроллер А затем В и затем С. Каждый контроллер я вставил в индекс 0.
Таким образом, у меня есть иерархия, как показано ниже
C
В
A
это мой синглтон
@implementation PresentHelper
- (id)init
{
self = [super init];
if (self) {
self.viewControllers = [NSMutableArray new];
}
return self;
}
+ (PresentHelper *)sharedInstance
{
static dispatch_once_t pred;
static PresentHelper *sharedInstance = nil;
dispatch_once(&pred, ^{
sharedInstance = [[self alloc] init];
});
return sharedInstance;
}
- (void)backToViewControllerA
{
for (UIViewController *controller in self.viewControllers) {
[controller dismissModalViewControllerAnimated:NO];
}
[self.viewControllers removeAllObjects];
}
@end
В UIViewController
C Слово backToViewControllerA
метод.
Поэтому, когда я отлаживал этот метод, мне было интересно, почему метод - viewDidLoad
(для каждого контроллера в self.viewControllers) вызывается после этой строки [controller dismissModalViewControllerAnimated:NO];
, поскольку я думаю, что это не должно работать так, но оно работает.
Итак, возможно, это не один из способов возврата к контроллеру вида A, но в любом случае мой вопрос связан с методом viewDidLoad.
Также это мой код ниже, как я представляю каждый контроллер. У меня есть базовый класс, и каждый (A, B, C-контроллеры унаследованы от него).
- (void)presentModalViewController:(UIViewController *)modalViewController animated:(BOOL)animated
{
PresentHelper *presentHelper = [PresentHelper sharedInstance];
[presentHelper.viewControllers insertObject:modalViewController atIndex:0];
[super presentModalViewController:modalViewController animated:animated];
}
Также получил сообщение
NSArray мутировали, будучи перечислены
Так как я думаю, что после того, как уволить теряю объект и, может быть, это моя проблема.
Итак ... вы задаетесь вопросом о поведении viewDidLoad, или вы спрашиваете, что является лучшим способом получить от C до A? Является ли причина _entire_ для Singleton просто для облегчения навигации назад к A с C? Должно ли решение быть совместимым с iOS4.3? – foundry
вопрос касательно лучший способ. Я нашел странное поведение, и это связано с мутировавшим моим массивом и, как я думаю, не связано с viewDidLoad. спасибо –
Нужно ли работать на iOS4.3? Это важное различие в отношении возможных решений. – foundry