pushViewController导致黑屏

时间:2012-05-31 09:46:47

标签: iphone ios pushviewcontroller

我有一个iOS项目(不使用Storyboard),它有2个UITextField和1个按钮(登录屏幕)。当用户单击该按钮时,它会向服务器启动POST,如果用户在数据库中,则返回“1”。然后,转到另一个屏幕。

问题是,该屏幕显示为黑色。这是我的代码:

在requestFinished方法中:

if([responseString2 isEqualToString:(@"1")]){
termsViewController *termscreen=[[termsViewController alloc]init];
    [[self navigationController] pushViewController:termscreen animated:YES];
}

在委托类中,方法initDiddidFinishLaunchingWithOptions:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.viewController = [[firstViewController alloc] initWithNibName:@"firstViewController" bundle:nil];
self.window.rootViewController = self.viewController;
//
UINavigationController *navcontroller= [[UINavigationController alloc]initWithRootViewController:self.viewController];
[[self window]setRootViewController:navcontroller];
[self.window makeKeyAndVisible];    
return YES;

}

它转到另一个屏幕,显示导航栏...但屏幕是黑色的。我是iphone开发的新手,所以可能会遗漏一些东西。

任何人都可以帮助我吗?

提前致谢。

3 个答案:

答案 0 :(得分:1)

我猜你没有用它来分配nib文件。试试这个:

termsViewController *termscreen=[[termsViewController alloc] initWithNibName:@"termsViewController" bundle:nil];

我假设您的视图控制器变量的名称为termsViewController,您可以根据自己的需要进行更改。我希望这有帮助。快乐的编码: - )

答案 1 :(得分:0)

我认为这是因为您的第二个视图控制器不在导航控制器内部。当您创建导航控制器时,您必须向其添加一个对象数组,因此它知道要推送什么。

代码段:

UINavigationController *navContr = [[UINavigationController alloc]init];
FirstViewController *firstViewContr = [[FirstViewController alloc] init];
MapViewController *mapContr = [[MapViewController alloc] init];
NSArray *vcArray = [NSArray arrayWithObjects: mapContr, firstViewContr, nil];
[navContr setViewControllers:vcArray];
[self.window setRootViewController:navContr];
[self.window makeKeyAndVisible];
return YES;

答案 2 :(得分:-2)

可能是您没有实施(或删除)

- (void)loadView
{
    // If you create your views manually, you MUST override this method and use it to create your views.
    // If you use Interface Builder to create your views, then you must NOT override this method.
}