我是iOS开发的新手,现在正在学习一些课程。目标是修复一个由前同事在2011年初创建的非常古老的应用程序。我遇到了这个我无法解决的问题。
我想呈现一个显示登录屏幕的ViewController。但是当呈现ViewController时,它隐藏在navigationController和statusbar下。我也收到了这个错误:
不建议在分离的视图控制器上显示视图控制器
以下是代码:
Login *fvController = [[Login alloc] initWithNibName:@"Login" bundle:[NSBundle mainBundle]];
[fvController setTitle:@"Login"];
UINavigationController *navCon = [[UINavigationController alloc] initWithRootViewController:fvController];
[fvController setKc:self];
[self presentViewController:navCon animated:YES completion:nil];
[fvController release];
[navCon release];
navCon = nil;
fvController = nil;
任何可以帮助我的人?
提前致谢!
答案 0 :(得分:0)
UIWindows有一个rootViewController字段,指向层次结构中的第一个视图控制器。如果你从这个层次结构之外的控制器中呈现一个视图控制器,就会发生奇怪的事情。
检查您的关键窗口([yourUIApplication keyWindow])是否设置了此字段。如果它是零,则整个层次结构都是分离的,需要重新运行。如果窗口具有根视图控制器,则可以在重构层次结构时从此处显示视图,以便所有视图最终都连接到根。
答案 1 :(得分:0)
这种情况正在发生,因为您正在发布您创建的ViewController实例,尝试更改这样的代码:
在viewController顶部的@implementation下声明你的viewControllers
@implementation yourViewController
{
Login *fvController;
UINavigationController *navCon;
}
现在改变你的代码
fvController = [[Login alloc] initWithNibName:@"Login" bundle:[NSBundle mainBundle]];
[fvController setTitle:@"Login"];
navCon = [[UINavigationController alloc] initWithRootViewController:fvController];
[fvController setKc:self];
[self presentViewController:navCon animated:YES completion:nil];
将释放对象添加到dealloc方法
- (void)dealloc
{
[fvController release];
[navCon release];
navCon = nil;
fvController = nil;
}