У меня есть эта проблема, когда я имитирую свое приложение, это не ошибка или предупреждение, но оно появляется в моей консоли, кто-нибудь когда-либо испытывал это раньше?
Несбалансированные вызовы для перехода на начало/конец для <FirstViewController: 0x2a2c00>
Ответ 1
В моем случае эта ошибка возникает, если вы быстро нажимаете две вкладки в таблице.
Результат приводит к неправильному титлену, кнопка возврата исчезает. Кто-то упомянул, что когда вы нажимаете вид, set animated:NO
. Ошибка исчезнет, но по-прежнему вызывает странное поведение. Он подталкивает два вида, тогда вам нужно вернуться дважды, чтобы вернуться к экрану tableview.
Метод, который я попытался решить эту проблему:
добавить BOOL cellSelected;
in viewWillAppear
cellSelected = YES;
в делегате didselectcell if (cellSelected){cellSelected = NO; do action ; }
Это помогает предотвратить быстрый щелчок по двум различным ячейкам.
Ответ 2
В моем случае это произошло, когда я вызвал [self performSegueWithIdentifier:@"SomeIdentifier" sender:self];
в методе UINavigationController
item viewDidLoad
.
Перемещение его в метод viewDidAppear
разрешило проблему.
Вероятно, причина в том, что в viewDidLoad
не все фантастические анимации уже закончены, а в viewDidAppear
все сделано.
Ответ 3
У меня тоже есть эта проблема. Я нашел два решения этой проблемы:
- Вы можете увидеть это решение выше.
- Я нашел подкласс из
UINavigationController
, где эта проблема решена. Буферизованный контроллер навигации
Ответ 4
Вы должны запустить свой код в другом цикле, чтобы избежать этого.
double delayInSeconds = 0.1;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
// Put your code here
[self presentViewController:self.yourModalVC animated:YES completion:nil];
});
Ответ 5
У меня было много проблем с той же проблемой. Я решил это таким образом
1) Вы не используете UIViewController's
назначенный инициализатор initWithNibName:bundle:
. Попробуйте использовать его вместо init
.
2) установите animated:YES
в NO, и это решило проблему.
например. [self.navigationController pushViewController: viewController_Obj animated:NO];
Ответ 6
У меня была такая же проблема с помощью навигационного контроллера и нажатием других контроллеров. Я попытался использовать Buffered Navigation Controller и несколько других подходов, но для меня это не сработало. Проведя некоторое время для выяснения этого, я заметил, что эта проблема возникает, если вы пытаетесь нажать новый контроллер просмотра во время предыдущей транзакции (анимации) (примерно на 0,5 секунды я предполагаю). Во всяком случае, я сделал быстрое решение с делегированием контроллера навигации и ожиданием окончания предыдущей анимации.
Ответ 7
Убедитесь, что вы не забыли в -viewWillAppear, -viewDidAppear, -viewDidLoad, -viewWillDisappear, -viewDidDisappear, чтобы вызвать правильный супер-метод при перегрузке этих методов. Например, в моем случае я неправильно определил имя метода следующим образом:
-(void)viewDidAppear
{
[super viewDidDisappear];
//some code staff
..
}
обратите внимание, что появляются и исчезают методы несовпадающие
Ответ 8
'Несбалансированные вызовы для перехода на начало/конец для "
Говорит, что анимация запускается до того, как последняя связанная анимация не будет выполнена. Итак, вы выталкиваете какой-либо контроллер, прежде чем нажимать новый? Или может появиться до корня? если да, попробуйте сделать это без анимации, т.е. [self.navigationController popToRootViewControllerAnimated:NO];
И посмотрим, разрешило ли это проблему, В моем случае это сделало трюк.
Ответ 9
Причина Сообщение: Это сообщение отображается в том и только в том случае, если вы нажимаете/представляете другой контроллер View из методов viewWillAppear
, loadView
, init
или viewDidLoad
текущего представления контроллер
Способ удаления сообщения об ошибке: Перемещение вашего кода нажатия/представления на viewDidAppear
метод решит проблему
Ответ 10
Ситуация может возникнуть, если вы добавляете представление с модульным контроллером представления в виде под-представления. Лучше всего использовать:
-(void) viewDidAppear:(BOOL)animated {
[self presentViewController:self.yourModalVC animated:YES completion:nil];
}
В основном говорят, что жизненный цикл представления не оптимизирован для тех viewControllers, которые вы пытаетесь отобразить.
Ответ 11
У меня есть аналогичная проблема при попытке сделать:
[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:2] animated:YES];
в функции, подобной - (void) popUpToLevelTwo;
, и положить a return;
в конце функции решает проблему
Ответ 12
Для чего это стоит, я получил эту же ошибку, не включая вызов [super viewDidLoad:animated]
в моем переопределении viewDidLoad
.
Ответ 13
Я также получил это в
[self dismissModalViewControllerAnimated:YES];
Я изменил YES
на a NO
и решил проблему.
Ответ 14
У меня такая же проблема, когда я использовал метод popcontroller navigationcontroller В моем приложении я использую отдельную логику для контроллера навигации, поэтому избегаю использования навигационной панели, и она всегда скрыта. Затем я использую пользовательский вид и уведомление для обработки подкладки и событий. наблюдатели-наблюдатели регистрируются и не удаляются. Поэтому уведомление срабатывает дважды, и оно создает вышеупомянутую ошибку. Проверьте свой код на наличие ошибок
Ответ 15
У меня также была эта проблема, когда я нажал кнопку из NIB. Оказывается, я случайно подключил кнопку, чтобы отправить событие на два метода IBAction, каждый из которых сделал pushViewController: анимированный:
Ответ 16
У меня была реализована некоторая логика, чтобы ждать нажатия UIViewController
, пока не будут загружены все данные. В этой логике произошла ошибка, из-за чего слишком рано нажимать UIViewController
, пока идет еще один вызов API.
Это привело к тому, что те же UIViewController
были дважды нажаты клавишей UINavigationController
и дали это предупреждение.
Ответ 17
У меня возникла эта проблема, потому что я вызывал UIPrintInteractionController из viewController без UITabbar и ни UINavigationBar. Кажется, что UIPrintInteractionController не получил правильный printInteractionControllerParentViewController. Реализация метода в делегате и возврат текущего rootViewController сработали для меня.
- (UIViewController*)printInteractionControllerParentViewController:(UIPrintInteractionController*)printInteractionController;
Ответ 18
У меня была аналогичная проблема, связанная с перемоткой модальных диалогов. Размещено решение здесь...
fooobar.com/questions/58242/...
[Проблема]
Nav Controller → VC1 -Push → VC2 -PopOver или Modal Segue → VC3.
VC3 отматывается обратно на VC1.
Когда Segue от VC2 до VC3 является PopOver и Modal, разматывание заканчивается предупреждением: неуравновешенные вызовы для перехода на начало/конец для UIViewController "
Если Segue от VC до VC нажат, предупреждение не будет.
[Решение]
Было бы здорово, если бы позаботиться об этом. Может быть, это ошибка, может быть, и нет. В любом случае, решение состоит в том, чтобы сделать VC2 (контроллер, у которого есть всплывающее окно) цель перемотки, а затем дождаться, пока он не появится, прежде чем появиться навигационный контроллер. Это гарантирует, что анимация перемотки назад (обратного всплывающего окна) имеет достаточно времени для завершения, прежде чем двигаться дальше. Даже если анимация выключена, ему все равно придется ждать, иначе вы получите сообщение об ошибке.
Ваш код для VC2 должен быть следующим. (Swift)
class VC2: UIViewController {
private var unwind = false
@IBAction func unwindToVC1(segue:UIStoryboardSegue) {
unwind = true
}
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
if unwind {
self.navigationController?.popViewControllerAnimated(false)
}
}
}
Ответ 19
У меня была эта проблема, когда я забыл установить Break; после нажатия представления в инструкции switch!
Как здесь:
case 1:{
SomeViewController *someViewController = [[SomeViewController alloc]initWithNibName:@"SomeViewController" bundle:Nil];
[self.navigationController pushViewController:someViewController animated:YES];
[someViewController release];
}
break; //Forgetting to set break here:
Ответ 20
причина ошибки "Несбалансированные вызовы для перехода на начало/конец" - это когда вы перемещаетесь | дважды в два раза
Ответ 21
одно решение было бы,
[NSTimer scheduledTimerWithTimeInterval:0.05(or as required) target:self
selector:@selector(your_selector_method_to_push_the_view) userInfo:nil repeats:NO];
Ответ 22
Вы можете столкнуться с этим, если попытаетесь закрыть UIViewController до того, как он завершит загрузку.
У меня было это сообщение в консоли и полностью фокусировался на UIViewController, который без преувеличения представлял новый UIViewController. Я, наконец, обнаружил, что проблема была в UIViewController, который я представлял, увольнялась сама, потому что пользователь не вошел в свою учетную запись.
Надеюсь, это поможет кому-то.
Ответ 23
Это было тяжело для меня: Я переопределил
override func shouldAutomaticallyForwardRotationMethods() -> Bool {
return true
}
без переопределения:
override func shouldAutomaticallyForwardAppearanceMethods() -> Bool {
return true
}
в моем корневом навигационном контроллере Windows. то дочерний навигационный контроллер жаловался при нажатии другого контроллера вида с вышеупомянутым предупреждением. Предупреждение не было худшим, большая проблема заключалась в том, что делегат детского навигационного контроллера больше не назывался. weired.
Ответ 24
В моем случае я извлекал NSData
из NSURL
внутри метода viewDidLoad
'.