2016-08-05 4 views
0

Я пытаюсь работать с простым приложением входа, которое при успешном входе в систему отображает страницу меню. В листе действий на странице меню у нас есть возможность взглянуть на всех пользователей, зарегистрированных на этом телефоне и нажав на любого пользователя, он должен снова выполнить обработку имени и перейти непосредственно к странице меню. Так будет продолжаться рабочий процесс.Навигация между контроллерами - Черные экраны

Ниже приведено изображение, которое объясняет это.

enter image description here

Все контроллеры подключаются к перетекает для контроллера счетов и среднего контроллера, за исключением. Навигация между этими двумя осуществляется с помощью pushViewController, поскольку мне пришлось передать некоторую информацию из контроллера учетных записей (контроллер табличного представления со списком всех пользователей) в средний контроллер.

MiddleController *maController = [[MiddleController alloc] init]; 
     if (maController.view) { 
      maController.ma_userId = mo_userId; // Set the exposed property 
      maController.ma_password = mo_password; 
     [self.navigationController pushViewController:maController animated:YES]; 

Средний контроллер делает весь процесс совершенно после получения деталей. Но обращение к диспетчеру меню - вот где я столкнулся с проблемой. Если я использую segue между средним контроллером и контроллером меню, возникает ошибка, указывающая no identifier with the name segueName found. Но если я использую pushViewController, тогда он отображает пустой черный экран. Могут ли некоторые помочь мне решить это.

Это, как я толкая его:

MenuTableViewController *mapMenuTableviewController = [[MenuTableViewController alloc]init]; 
     [self.navigationController pushViewController:mapMenuTableviewController animated:NO]; 

Я перепробовал все способы, которые размещены в предыдущих SO вопросы, но ничего не помогало.

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

+0

путь вы использованияКонтактная [self.navigationController popViewControllerAnimated: YES]; –

+0

@balkaransingh, если я использую тот же код, что и ваш, он просто показывает тот же экран, что и контроллер учетных записей. – ASN

+0

ok @ASN вы хотите пойти MenuTableViewController после нажатия кнопки? –

ответ

1

Старайтесь не Alloc-инициализации, но создать его экземпляр FOM раскадровку, как это (вы должны добавить его в раскадровку идентификатор)

YourViewControllerClass *viewController = [[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil] instantiateViewControllerWithIdentifier:@"ViewController"]; 

А затем вставьте его.

+0

@IIya: Не могли бы вы объяснить, что вы подразумеваете под 'вы должны добавить его в раскадровку id'. – ASN

+0

Пожалуйста, посмотрите этот вопрос: http://stackoverflow.com/q/13867565/6562596 –

+0

в моем случае, я должен правильно определить панель расписания для контроллера меню? – ASN

0

Добавить раскладку Idboard в конструктор интерфейса yput «SendSMSViewController» и вызвать код ниже.

let SendSmsVC = self.storyboard?.instantiateViewControllerWithIdentifier("SendSMSViewController") as! SendSMSViewController 

    self.navigationController?.pushViewController(SendSmsVC, animated: true) 
1

Вам нужно добавить раскадровки идентификатор, как этот

enter image description here

И использовать как

UIViewController *viewController = [[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil] instantiateViewControllerWithIdentifier:@"ViewControllerID"]; 
+0

в моем случае, я должен определить подсказку для диспетчера меню справа? – ASN

0

Plz использовать этот код будет идти в MenuTableViewController.

for (UIViewController *controller in self.navigationController.viewControllers) 
        { 
         if ([controller isKindOfClass:[MenuTableViewController class]]) 
         { 
          [self.navigationController popToViewController:controller animated:YES]; 

          break; 
         } 
        } 
1

Перейти к раскадровке, и установить идентификатор так:

enter image description here

Теперь в вашем контроллере представления, сделайте следующее:

YourViewController *viewController = [[UIStoryboard storyboardWithName:@"<your storyboard name>" bundle:nil] instantiateViewControllerWithIdentifier:@"myViewControllerID"]; 
[self.navigationController pushViewController:viewController animated:NO]; 

ОБНОВЛЕНИЕ -

Нажмите кнопку «Контроллер просмотров» и контроллер среднего уровня. я сказал раньше.

Затем, когда ваша обработка выполняется в середине контроллера, просто сделать это:

[[self presentingViewController]presentingViewController]dismissViewControllerAnimated:NO completion:nil]; 
+0

в моем случае, я должен определить панель расписания для контроллера меню вправо? – ASN

+0

Да, используйте его для контроллеров вида, где вы не используете segues для представления. (здесь, ваши учетные записи и средний контроллер) –

+0

да .. Его работа .. Спасибо за ответ. Но поскольку он должен проходить через средний контроллер между ними, он должен показывать черный экран для фракции, а затем показывать контроллер меню. – ASN