Что ж, для некоторых из вас этот вопрос может показаться смешным, но я обсуждаю со своими товарищами по команде дизайн приложения для iOS, и мне нужно ваше мнение по этому поводу.
Старый дизайн, с которым я не согласен, выглядит следующим образом
- У нас есть ViewControllerA, который содержит кнопку «Перейти к B». Кнопка имеет переход PUSH для перехода к B.
- У нас есть ViewControllerB, который содержит кнопку «Перейти к A». У кнопки есть переход PUSH для перехода к A.
- Нам приходится много путешествовать между двумя ViewController'ами.
Как видите, между ViewController A и B существует цикл перехода, и я думаю, что мы никогда не должны допускать этого. Я бы предпочел перейти от B к A с помощью кнопки «Назад» на панели навигации.
Насколько серьезен переходный цикл PUSH в дизайне? Допустимо ли это в некоторых случаях? Где посмотреть рекомендуемый хороший дизайн от Apple (если есть?)
РЕДАКТИРОВАТЬ: Я пытаюсь использовать решение nfarshchi "поп перед отправкой", но оно не работает. Вот как я это сделал: 1) Я не могу создать переход от VC A к VC B и перейти от VC B к VC А в то же время. Кажется, что раскадровка предотвращает это. 2) Таким образом, я создаю один переход с идентификатором «gotoB» от кнопки «Перейти к B» в VC A к VC B и один переход с идентификатором «gotoA» от кнопки «Перейти к A» из VC B в VC A.
Таким образом, раскадровка будет выглядеть так:
VC X ---Push---> VC A ‹----Push----> VC B (Причина, по которой мне нужен ViewController X, объясняется позже) 3) В VC A у меня есть это:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
NSLog(@"Prepage for segue go to B") ;
if ([[segue identifier] isEqualToString:@"gotoB"] ) {
[self.navigationController popViewControllerAnimated:NO];
}
}
Мне нужен VC X, потому что я не могу извлечь ViewController из стека, если там есть только один ViewController.
Теперь это кажется правильным, но когда я нажал «Перейти к B», вместо этого он перешел к VC X. Было ясно, что вышеприведенный popViewControllerAnimated: извлек VC A, и все, переход к VC B больше не запускался. В результате VC B не был помещен в стек, как ожидалось.
Таким образом, я считаю невозможным реализовать решение нфарщи.