0

Существует проблема в иерархии взглядов. Вот поток моего приложения. enter image description hereПросмотр иерархии изменен после нажатия контроллера вида через контроллер навигации?

При запуске приложения View Controller «A» доступен. После этого раскадровка «B» загружается через «Справочник StoryBoard (Push)», где присутствует другой навигационный контроллер и загружен Начальный экран. При нажатии кнопки «Меню» на главном экране видна боковая панель.

Теперь, когда я нажимаю на элементы меню боковой панели вид контроллера «B» нажат. Этот контроллер просмотра находится на главном экране и не является Vsible.

enter image description here

Помощь Просмотр Контроллер илит виден под Home контроллера. Я хочу Help View Controller должен быть на высоте Домашний контроллер. Я не понимаю, что проблема приходит .. Любая помощь будет оценена ..

+0

Вы нажимаете боковое меню на навигационном контроллере? или представить его? – Lion

+0

Я представляю боковую панель на навигационном контроллере, после чего на действие меню вызывается определенный контроллер вида. –

+0

Проверьте мой ответ !! – Lion

ответ

0

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

ответ зависит от того, как вы показывая свое меню на стороне, но из предположений

то, что вам нужно сделать, это установить контроллер представления корня или сохранить ссылку навигационного контроллера и нажмите оттуда

+0

Спасибо за ответ, Боковая панель представлена ​​на Home Controller. После отладки я узнал, что контроллер справки отображается на навигационном контроллере, но находится в режиме Home View Controller .. Любая помощь? –

0

Если вы представляете а затем он не находится на navigation controller, поэтому вы должны сначала dismiss это боковое меню, и после его завершения вы должны нажать новый контроллер вида (говорит B или Справка). Я пишу свой фрагмент кода, который я использую в моем проекте для демонстрации,

- (IBAction)settingClick:(id)sender { 



SettingViewController *svc = [self.storyboard instantiateViewControllerWithIdentifier:@"settingsScreen"]; 



[self dismissViewControllerAnimated:NO completion:^{ 


    [self.vc.navigationController.navigationController pushViewController:svc animated:YES]; 


     }]; 


} 

Над методом толчке setting view controller на текущем navigation controller после увольнения side menu

Теперь главное self.vc это объект previous viewcontroller (Home контроллер в вашем случае, я думаю), на каком стороне было представлено меню.

Так мой SideMenuViewController имеет свойство, как,

@property (nonatomic,strong) UIViewController *vc; 

, который я ставлю с self от предыдущего контроллера представления (в вашем случае от Home View Controller) что-то вроде,

SideMenuViewController *smvc = [self.storyboard instantiateViewControllerWithIdentifier:@"sideMenu"]; 



      smvc.modalPresentationStyle = UIModalPresentationOverCurrentContext; 
      [self presentViewController:smvc animated:NO completion:^{ 


       smvc.vc = self; 

      }]; 

И я использовали [self.vc.navigationController.navigationController pushViewController:svc animated:YES];, т. е. два контроллера навигации, чтобы нажать, потому что у меня есть два контроллера навигации в моей иерархии взглядов, чтобы нажать этот новый контроллер.

Вы можете управлять этим в соответствии с вашей настройкой, сколько навигационного контроллера у вас есть!

Надеется, что это поможет :)

+0

Я использовал это, но безуспешно. –

+0

. Я также использовал следующий подход. [self performSelector: @selector (pushViewController) withObject: nil afterDelay: 1.0]; - (void) pushViewController { RGNavigationController * navVC = (RGNavigationController *) self.frostedViewController.contentViewController; HelpController * helpVC = [self.storyboard instantiateViewControllerWithIdentifier: @ "HelpController"]; if ([navVC.topViewController isKindOfClass: [HelpController class]]) { [self.frostedViewController hideMenuViewController]; возвращение; } [navVC pushViewController: helpVC animated: YES]; } –

0

После рытья много, я нашел решение для этого.

UIStoryboard * раскадровка = [UIStoryboard раскадровкаWithName: @ "Home" bundle: nil]; RootController * someViewController = [storyboard instantiateViewControllerWithIdentifier: @ "RootController"]; [self.navigationController pushViewController: someViewController animated: YES]; `

Я установил другой контроллер навигации как root ViewController окна, и это сработало для меня. Спасибо.