我一直在努力使用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之前全部完成。
如果有人可以帮助发光,我会非常感激。
谢谢! 〜Arash的
答案 0 :(得分:10)
这是一篇旧帖子,但对于那些可能在将来遇到此问题的人,我已经通过将ViewController视图的clipsToBounds
属性设置为“TRUE”来解决它
-(void)viewDidLoad {
[super viewDidLoad];
self.view.clipsToBounds = YES;
}
答案 1 :(得分:0)
尝试将导航堆栈上各种视图的背景颜色更改为不同的可识别颜色(包括主窗口)。其中一个可能出于某种原因显示,如果每个人都有不同的颜色,你可以很容易地确定哪一个是罪魁祸首。
答案 2 :(得分:0)
FWIW,在Swift应用程序中发生了同样的问题。根本原因似乎是我这样做:
self.navigationItem.rightBarButtonItem = nil
...动态隐藏按钮,UIBarButtonItem
在当前UIViewController
中有一个插座。
我实际上并不需要IBOutlet
那个按钮,所以我删除了插座,它起作用了。