2015-10-27 2 views
1

Я использую aryaxt/iOS-Slide-Menu. Моя проблема: мне нужно показать разные левые меню в зависимости от того, какой вид контроллера отображается. Это мой код в AppDelegate:Различные ViewControllers в iOS-слайд-меню

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    // Override point for customization after application launch. 
UserMenuViewController *leftMenu = (UserMenuViewController *) [self.window.rootViewController.storyboard instantiateViewControllerWithIdentifier:@"UserMenuViewController"]; 


    [SlideNavigationController sharedInstance].leftMenu = leftMenu; 

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

AppDelegate *sharedeDelegate = ((AppDelegate *)[UIApplication sharedApplication].delegate); 

    ProfessionalMenuViewController *leftMenu = (ProfessionalMenuViewController *) [sharedeDelegate.window.rootViewController.storyboard instantiateViewControllerWithIdentifier:@"ProfessionalMenuViewController"]; 
    [SlideNavigationController sharedInstance].leftMenu = leftMenu; 

Я пробовал много вещей, но ничего не работало. Благодаря!

+0

Сделать UserMenuViewController * leftMenu недвижимость в AppDelegate.h. Инициируйте его в файле didFinishLaunchingWithOptions как self.leftMenu = [все, что вы хотите]. в Other Viewcontrollers, получите доступ к Appdelegate и установите его как sharedDelegate.leftMenu = [whatever]. Вопрос, почему, почему вы используете его в AppDelegate? Почему бы не использовать его как члена VC, так как функциональность отличается от разных VC? – NSNoob

+0

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

+0

@RenanGelrado, вы попробовали то, что я предложил? – NSNoob

ответ

3

Я знаю только одно решение:

AppDelegate *delegate = (AppDelegate *)[UIApplication sharedApplication].delegate; 
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil]; 

SlideNavigationController* landingScreen = (SlideNavigationController*)[mainStoryboard 
                instantiateViewControllerWithIdentifier: @"SlideNavigationController"]; 
LeftMenuViewController *leftMenu = (LeftMenuViewController*)[mainStoryboard instantiateViewControllerWithIdentifier: @"CVLeftMenuViewController"]; 

landingScreen.leftMenu = leftMenu; 
landingScreen.enableShadow=YES; 
landingScreen.enableSwipeGesture = YES; 
landingScreen.panGestureSideOffset = 0; 

delegate.window.rootViewController = landingScreen; 

нужны обновления SlideNavigationController см landingScreen (я использовал, когда язык изменения без перезагрузки приложения)

0

Я предлагаю настроить leftMenuViewController, установить одну глобальную переменную и показать другой контент таблицы в левом меню в зависимости от значения глобальной переменной или обработать уведомление SlideNavigationControllerDidReveal в файле leftMenuViewController и добавить любое subview или удалить subview на основе вашего открытого в данный момент контроллера sideview ,

Смежные вопросы