2012-05-31 2 views
1

У меня есть проект iOS (без использования раскадровки), который имеет 2 UITextField и 1 кнопку (экран входа). Когда пользователь нажимает кнопку, он запускает POST на сервер, который возвращает «1», если пользователь находится в базе данных. И затем переходит на другой экран.pushViewController приводит к черному экрану

Проблема в том, что экран показывает черный. Это мой код:

В 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, поэтому, вероятно, что-то упустят.

Может ли кто-нибудь мне помочь?

Заранее спасибо.

+0

, что Иос ур работать? –

+0

Im using Xcode 4.3 – Fustigador

+0

И iOS 5.0 – Fustigador

ответ

1

Я думаю, вы не присваиваете ему файл nib. Попробуйте это:

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

Я предполагаю, что имя вашего контроллера представления переменного быть termsViewController, которые вы можете изменить в соответствии с вашими потребностями. Надеюсь, это поможет. Счастливый :-) кодирования

+0

Я сделал это, Anshuk, и теперь он выдает «NSInternalInconsistencyException», причина: «Не удалось загрузить NIB в комплекте». Я понял, что цель настроена правильно (в инспекторе) правильно, также установите для параметра «Относительно группы» значение «Относительно проекта» и выбрасывает одно и то же исключение. – Fustigador

+0

Это метод initWithNibName в termsViewController, в случае, если это помогает: - (ID) initWithNibName: (NSString *) nibNameOrNil расслоение: (NSBundle *) nibBundleOrNil { само = [супер initWithNibName: nibNameOrNil расслоение: nibBundleOrNil]; if (self) { // Пользовательская инициализация } return self; } – Fustigador

+0

Почему вы создаете метод initWithNibName? просто создайте xib-файл и назовите его termsViewController. затем вызовите заявление, упомянутое выше. –

-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. 
} 
+0

Мой метод loadView был таким, как вы опубликовали. Я попытался прокомментировать это, и результат тот же. – Fustigador

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; 
Смежные вопросы