2012-06-07 3 views
0

Я искал этот форум и рассматривал различные решения проблемы «черного экрана» при загрузке экрана на симулятор iPhone, но я считаю, что моя проблема уникальна и, следовательно, Я еще не смог найти решение.iPhone - черный экран в симуляторе - viewcontroller

Вот что происходит:

  • ViewB нагрузки правильно, когда я связываю ViewA к ViewB с помощью Interface Builder с использованием "толчок" SEGUE (сопротивления линии закончена, выберите "толчок");
  • «push» выполняется при нажатии кнопки на ViewA.

Однако, когда я пытаюсь загрузить ViewB программно, когда нажата кнопка на ViewA, ViewB появляется как черный экран. Вот что я делаю:

  • Я использую последнюю версию XCode;
  • -(void) loadView был закомментирован из ViewB;
  • Я создал ViewA и ViewB с помощью Interface Builder и нет .xib-файла для обоих представлений, поэтому я считаю, что не могу использовать параметр «initWithNibName» (?), Когда программно alloc + init'ing ViewB (?), Когда кнопка нажата.
  • У меня есть NavigationController, ViewA - это «RootView» и ViewController для каждого из ViewA и ViewB.
  • код я использую программно загрузить ViewB с нажатием кнопки ViewA выглядит следующим образом:

    ViewB * viewB = [[ViewB Alloc] инициализации]; [self.navigationController pushViewController: viewB animated: YES];

У кого-нибудь есть решения? (P.S - это сообщество удивительно !!!)

Спасибо всем!

ответ

0

Попробуйте инициализацию ViewController с initWithNibName: @ «» расслоение: Поместите имя файла XIB для этого вида в месте первого аргумента без расширения «.xib» и установите пакет на ноль или [NSBundle mainBundle ]. Вы можете дополнительно проверить документацию Apple.

+0

Благодарим за предложение! Что делать, если я не создал.xib, когда я создал класс, связанный с ViewB? – ehul

+0

Возможно, мне придется использовать «instantiateViewControllerWithIdentifier: @» <идентификатор, установленный в инспекторе идентификации для ViewController ». Я попробую его и посмотрю, работает ли он. – ehul

0

При использовании раскадровки вы должны инициализировать ViewController как этот

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:[NSBundle bundleForClass:[self class]]]; 
ViewControllerB *viewController = [storyboard instantiateViewControllerWithIdentifier:@"identifier"]; 
[self.navigationController viewController animated:YES]; 

В интерфейсе Builder вы должны установить идентификатор контроллера представления вы находитесь попробовать инициализировать на «идентификатор»

(MianStoryboard_iPhone - это, конечно, имя вашей раскадровки!)

0

возможно [self navigationController] - это нуль, проверьте его.

0

Возможно, ваш XIB испорчен. Вы можете попытаться удалить viewcontroller.m [h] [xib] и добавить новый. Перед этим скопируйте и запустите содержимое файлов m и h. После добавления нового пустого диспетчера представлений просто мимо содержимого. К сожалению, вам придется снова собрать xib.