在过渡期间使用 popViewController 闪烁白色的问题
Posted
技术标签:
【中文标题】在过渡期间使用 popViewController 闪烁白色的问题【英文标题】:Trouble with using popViewController flashing white during transition 【发布时间】:2011-06-04 17:13:16 【问题描述】:我一直在努力使用 UINavigationalController 在视图之间切换。我已经多次使用这个系统没有问题,但在我的新应用程序中它不能正常工作。
这里是问题: 当我推送一个新的视图控制器时,我使用以下代码:
NewViewController *newVC = [[NewViewController alloc] initWithNib:@"NewView" bundle:nil];
[self.navigationController pushViewController:newVC animated:YES];
[newVC release];
我用来返回 newVC 内部的前一个视图的代码是:
[self.navigationController popViewControllerAnimated:YES];
我读到这可能会释放 self.navigationController 本身,所以我实现了这段代码:
UINavigationController *nc = [self navigationController];
[nc popViewControllerAnimated:YES];
结果是平滑地过渡到 newVC,没有白色闪烁,但是当返回到原始页面时,屏幕会闪烁白色,好像它在转换回原始页面之前释放了 newVC。然而!调试时,我在原始页面的 viewWillAppear 和 newVC 的 dealloc 上放置了断点,viewWillAppear + 带有白色闪光的过渡在调用 newVC 的 dealloc 之前全部完成。
如果有人可以帮助阐明这一点,我将不胜感激。
谢谢! ~阿拉什
【问题讨论】:
这是一篇旧帖子,但我目前面临完全相同的问题。你解决了吗? Alex,我不记得我是如何解决这个问题的,但如果你仍然遇到这个问题,请尝试以下 KaiDANTE 的建议。如果可行,请在此处告诉我们,我会将其标记为答案以供将来参考:)。 【参考方案1】:这是一个老帖子,但对于那些将来可能会遇到这个问题的人,我已经通过将 ViewController 的视图的clipsToBounds
属性设置为“TRUE”来解决它
-(void)viewDidLoad
[super viewDidLoad];
self.view.clipsToBounds = YES;
【讨论】:
【参考方案2】:尝试将导航堆栈上各种视图的背景颜色更改为不同的可识别颜色(包括主窗口)。其中一个可能出于某种原因显示,如果每个都有不同的颜色,您可以很容易地确定哪个是罪魁祸首。
【讨论】:
【参考方案3】:FWIW,同样的问题发生在我的 Swift 应用程序中。根本原因似乎是我正在这样做:
self.navigationItem.rightBarButtonItem = nil
...动态隐藏按钮,其中UIBarButtonItem
在当前UIViewController
中有一个插座。
我实际上并不需要那个按钮的IBOutlet
,所以我移除了插座,它起作用了。
【讨论】:
以上是关于在过渡期间使用 popViewController 闪烁白色的问题的主要内容,如果未能解决你的问题,请参考以下文章