我一直在努力使用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];
结果是平稳过渡到新VC,没有白色闪烁,但当返回到原始页面时,屏幕会闪烁白色,就好像在转换回原始页面之前释放了新VC一样。然而!调试时,我在原始页面的viewWillAppear和newVC的dealloc上放置了断点,在调用newVC的解除锁定之前,viewWillAppare+转换都完成了。
如果有人能帮我照亮这一点,我将不胜感激。
谢谢!~ Arash
这是一篇老文章,但对于那些将来可能遇到这个问题的人,我已经通过将ViewController的视图的clipsToBounds
属性设置为"TRUE"来解决它
-(void)viewDidLoad {
[super viewDidLoad];
self.view.clipsToBounds = YES;
}
尝试将导航堆栈上各种视图的背景颜色更改为不同的可识别颜色(包括主窗口)。其中一个可能是由于某种原因出现的,如果每个都有不同的颜色,你可以很容易地确定哪一个是罪魁祸首。
FWIW,我在Swift应用程序中也遇到了同样的问题。根本原因似乎是我这样做:
self.navigationItem.rightBarButtonItem = nil
以动态隐藏按钮,其中UIBarButtonItem
在当前UIViewController
中具有出口。
我实际上不需要IBOutlet
来安装那个按钮,所以我取下了插座,它就工作了。