У меня есть последовательность шагов, которые пользователь должен выполнить, чтобы зарегистрироваться в моем приложении. Все это часть UINavigationController
. Когда пользователь переходит с шага 1 на шаг 2, выполняется pu sh segue для загрузки второго UIViewController
. У меня есть пользовательские NavItem
s на обеих страницах, чтобы пользователь мог go перемещаться вперед и назад по стеку по своему усмотрению.
в первый раз пользователь нажимает кнопку Step 2
, все хорошо. Затем они нажимают кнопку Step 1
на втором контроллере вида, они go возвращаются к первому v c, как и следовало ожидать.
Но вот где это становится странным: если они затем снова нажмите кнопку Step 2
, она перейдет ко второму контроллеру вида, но она оживляет дважды . Я много читал о том, как это может произойти, если переход связан с кнопкой, но в моем случае переход связан с контроллером представления (как вы можете видеть на скриншоте. Далее, если пользователь нажимает Step 1
, он анимирует назад дважды . И если они снова go через эту последовательность туда-сюда снова, анимации происходят три раза (и так далее).
Кажется, может быть, он каждый раз создает новый контроллер представления и добавляет его в стек, фактически не вставляя более раннюю версию. Это код, в котором я пытаюсь вставить стек v c во второй контроллер представления (извините, старый код obj c). Я сделал несколько разных попыток, но ни одна из них не решила проблему с несколькими анимациями:
- (IBAction)back:(UIBarButtonItem *)sender {
NSArray *controllers = self.navigationController.viewControllers;
int previous = (int)controllers.count - 2;
UIViewController *previousController = [controllers objectAtIndex:previous];
[self.navigationController popToViewController:previousController animated:YES];
}
Если это помогает, в первом контроллере представления кнопка инициирует метод, который проверяет вводимые пользователем данные. Если данные проверены, он просто выполняет следующую строку:
[self performSegueWithIdentifier:@"regUserDataSegue" sender:self];