Я нашел решение своей проблемы. Это немного грязно (и меня, вероятно, сожгут за это), но очень хорошо работает при тестировании и очень быстро реализуется. Вот как я это сделал.
В моем приложении есть класс 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.
Просто, мне потребовалось 10 минут, чтобы закодировать в моем приложении с 9 представлениями. :)
Последний вопрос, который у меня есть, подойдет ли мое решение для HIG?
person
Andrew S
schedule
30.01.2012