当我模拟我的应用时,出现了这个问题,它不是一个错误或警告,但它出现在我的控制台中,请问有没有人以前经历过这种情况?
当我模拟我的应用时,出现了这个问题,它不是一个错误或警告,但它出现在我的控制台中,请问有没有人以前经历过这种情况?
在我的情况下,当您在tableview中非常快速地点击两个标签时,就会出现此错误。
结果导致标题名称错误,返回按钮消失。有人提到,在推送视图时,设置animated:NO
。该错误将消失,但仍会引起一些奇怪的行为。它会推送两个视图,然后您需要退回两次才能返回tableview屏幕。
我尝试的方法以解决此问题:
添加 BOOL cellSelected;
在viewWillAppear
中 cellSelected = YES;
在didselectcell委托中 if (cellSelected){cellSelected = NO; 执行操作 ; }
这有助于防止非常快速地单击两个不同的单元格。
UINavigationController
项的 viewDidLoad
方法中触发了 [self performSegueWithIdentifier:@"SomeIdentifier" sender:self];
时,出现了问题。将其移动到 viewDidAppear
方法中可以解决这个问题。很可能的原因是在 viewDidLoad
中,尚未完成所有花哨的动画,而在 viewDidAppear
中所有内容都已经完成。我也有这个问题。我找到了两个解决方法:
UINavigationController
进行子类化,可以解决这个问题。缓冲导航控制器为避免此问题,您应该在不同的循环中运行代码。
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];
});
dispatch_async
中。关于dispatch_async
的事情是它会等待所有其他主队列上的动画完成,这比使用延迟要好得多,因为:1-你永远不知道延迟是否足够,它取决于您的主机设备2-你最终会过度使用延迟,并且有些东西会滞后。尝试这样做:dispatch_async(dispatch_get_main_queue(), ^{[self presentViewController:self.yourModalVC animated:YES completion:nil];});
- M. Porooshani我遇到了同样的问题,我通过以下方法解决:
1)您没有使用UIViewController
的指定初始化器initWithNibName:bundle:
,尝试改用它而不是仅使用init
。
2)将animated:YES
更改为NO
,问题得到解决。
例如:[self.navigationController pushViewController:viewController_Obj animated:NO];
请确保您在重载以下方法时不要忘记调用正确的超级方法:-viewWillAppear,-viewDidAppear,-viewDidLoad,-viewWillDisappear和-viewDidDisappear。例如,在我的情况下,我误用了方法名称,如下所示:
-(void)viewDidAppear
{
[super viewDidDisappear];
//some code staff
..
}
viewDidDisappear()
中调用了super.viewWillAppear()
。 - Daniel Wood我曾使用导航控制器并将其他控制器推送到其中,遇到了相同的问题。
我尝试使用Buffered Navigation Controller和其他几种方法,但都没有成功。在花费一些时间弄清楚后,我注意到如果你试图在先前的事务(动画)正在进行中(大约0.5秒的持续时间),就会出现这个问题。无论如何,我通过委托导航控制器并等待上一个动画完成来快速解决了这个问题。
'Unbalanced calls to begin/end appearance transitions for '
意思是在上一个相关的动画没有完成时就启动了新的动画。所以,您是在推入新的视图控制器之前弹出任何视图控制器吗?或者可能是弹出到根视图控制器?如果是这样,请尝试在没有动画的情况下执行此操作,例如:[self.navigationController popToRootViewControllerAnimated:NO];
看看是否解决了问题,在我的情况下,这个方法奏效了。
我曾经遇到类似的问题,涉及到重新打开模态对话框。在这里发布了解决方案...
https://dev59.com/5I7da4cB1Zd3GeqP9SZA#38795258
[问题]
导航控制器 -> VC1 -推入--> VC2 -弹出或模态转场--> VC3。
VC3正在向VC1回溯。
当从VC2到VC3的Segue为PopOver和Modal时,回溯将以警告结束:“UIViewController的开始/结束外观转换不平衡”。
如果从VC到VC的Segue是push,则不会出现警告。
[解决方案]
如果回溯逻辑能够处理这个问题那就太好了。也许这是一个错误,也许不是。无论哪种方式,解决方法是将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)
}
}
}
我遇到了这个问题,是因为我从一个没有UITabbar和UINavigationBar的viewController中调用了UIPrintInteractionController。看起来UIPrintInteractionController没有得到正确的printInteractionControllerParentViewController。 在委托中实现该方法并返回当前的rootViewController对我有帮助。
- (UIViewController*)printInteractionControllerParentViewController:(UIPrintInteractionController*)printInteractionController;
if (mp!= NULL){ [mp.view removeFromSuperview]; [mp stop]; [mp release]; mp = NULL; } NSLog(@“之后的顶部视图控制器:%@”,[[self navigationController] topViewController]); 如果([[self navigationController] topViewController] == self){
- sidslog