4

我一直在努力使用 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 上放置了断点,并且在调用 newVC 的 dealloc 之前,带有白色闪光的 viewWillAppear + 过渡全部完成。

如果有人可以帮助阐明这一点,我将不胜感激。

谢谢!~阿拉什

4

3 回答 3

10

这是一个旧帖子,但是对于那些将来可能会遇到这个问题的人,我已经通过将clipsToBoundsViewController 的视图属性设置为“TRUE”来解决它

-(void)viewDidLoad {
    [super viewDidLoad];
    self.view.clipsToBounds = YES;
}
于 2013-04-25T01:59:15.713 回答
0

尝试将导航堆栈上各种视图的背景颜色更改为不同的可识别颜色(包括主窗口)。其中一个可能出于某种原因显示,如果每个都有不同的颜色,您可以很容易地确定哪个是罪魁祸首。

于 2011-06-23T05:35:58.917 回答
0

FWIW,我在 Swift 应用程序中也发生了同样的问题。根本原因似乎是我正在这样做:

self.navigationItem.rightBarButtonItem = nil

...动态隐藏按钮,其中当前UIBarButtonItem有一个插座UIViewController

我实际上并不需要IBOutlet那个按钮,所以我取下了插座,它起作用了。

于 2017-01-05T02:43:10.550 回答