Вернуться к корню в IOS - PullRequest
       6

Вернуться к корню в IOS

4 голосов
/ 27 января 2012

Для некоторых это может звучать глупо. Я искал вокруг и нашел немного, в основном потому, что не могу найти подходящие условия поиска.

Вот что я хочу сделать:

Приложение начинается в представлении А.

Представление A запускает представление B, а представление B запускает представление C.

Позволяет ли представление C вернуться непосредственно назад к A, не закрывая себя и, таким образом, не раскрывая B. Например, кнопка главного меню.

Ответы [ 2 ]

11 голосов
/ 27 января 2012

Вы можете позвонить popToRootViewControllerAnimated:, если у вас есть UINavigationController. Если вы укажете NO для его анимации, он просто вернется к корню без предварительного отображения B.

1 голос
/ 30 января 2012

Я нашел решение моей проблемы.Это немного грязно (и я, вероятно, застрелюсь из-за этого), но работает очень хорошо в тестах и ​​очень быстро реализуется.Вот как я это сделал.

В моем приложении у меня есть класс 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?

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