Я нашел решение моей проблемы.Это немного грязно (и я, вероятно, застрелюсь из-за этого), но работает очень хорошо в тестах и очень быстро реализуется.Вот как я это сделал.
В моем приложении у меня есть класс Singleton с именем GlobalVars (я использую его для хранения различных глобальных настроек).Этот класс содержит логическое значение home_pressed и связанные средства доступа (через синтез).Вы также можете сохранить это значение в делегате приложения, если хотите.
В каждом контроллере представления с кнопкой главного меню я подключаю кнопку к методу homePressed IBAction следующим образом.Сначала установите глобальное логическое значение homePressed на YES , затем обычным способом отключите контроллер представления, но с анимацией NO .
-(IBAction) homePressed: (id) sender
{
[GlobalVars _instance].homePressed = YES;
[self dismissModalViewControllerAnimated: NO];
}//end homePressed
В каждом контроллере представления, кроме главного меню, я реализую метод viewDidAppear (который вызывается при повторном отображении представления) следующим образом.
-(void) viewDidAppear: (Bool) animated
{
if ([GlobalVars _instance].homePressed == YES)
{
[self dismissModalViewController: NO];
}
else
{
//put normal view did appear code here/
}
}//end viewDidAppead
В mainMenu контроллер представления, который является корневым приложения, я установил глобальное homePressed логическое значение на NO , в его представлении появился способ следующим образом
-(void) viewDidAppear: (Bool) animated
{
if ([GlobalVars _instance].homePressed == YES)
{
[GlobalVars _instance].homePressed == NO;
}
else
{
//put normal view did appear code here/
}
}//end viewDidAppear
Там это позволяет мне вернуться к главному главному меню моего приложения из любого представления вниз по цепочке.
Я надеялся избежать этого метода, но он лучше, чем повторная реализациямое приложение - это то, что я должен был бы сделать, если бы я хотел использовать решение UINavigationController.
Simple, мне потребовалось 10 минут, чтобы написать код в моем приложении 9 view.:)
Последний вопрос, который у меня есть, будет ли мое решение в порядке с HIG?