在转换过程中使用闪烁白色的popViewController时出现问题



我一直在努力使用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来安装那个按钮,所以我取下了插座,它就工作了。

相关内容

  • 没有找到相关文章

最新更新