2015-10-07 3 views
0

Я использую this library для реализации меню в своем приложении. Если я удалю приложение и запустим его, он успешно отобразит навигационную панель на домашней странице. Но если я закрою приложение без выхода из системы и запустил его снова, он не отобразил панель навигации.
Теперь я понимаю структуру NavigationController, как это стек из ViewControllers.

Вот что я делаю в AppDelegate.m, чтобы сделать мой HomeViewController мой RootViewController, если пользователь не вышел из аккаунта.Навигационная панель не отображается после первого запуска

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    // Override point for customization after application launch. 

    UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil]; 

    if([[NSUserDefaults standardUserDefaults]objectForKey:USERID] == nil) 
    { 
     NSLog(@"User is not logged in"); 
    } 
    else 
    { 
     NSLog(@"User ID: %@",[[NSUserDefaults standardUserDefaults]objectForKey:USERID]); 

     HomeViewController *loginController= (HomeViewController*)[mainStoryboard instantiateViewControllerWithIdentifier:@"HomeViewController"]; 
     self.window.rootViewController=loginController; 
    } 
return YES; 
} 

и вот что я делаю в viewDidLoad моего HomeViewController:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; self.rootNav = (CCKFNavDrawer *)self.navigationController; 
    [self.rootNav setCCKFNavDrawerDelegate:self]; 
    self.navigationController.navigationBarHidden=NO; 
    self.navigationItem.title = @"Recent Posts"; 
self.navigationItem.hidesBackButton = YES; 
} 

Кроме того, как упоминалось в демо-library я использую CCKFNavDrawer как мой класс для моего NavigationController ,
Я думаю, что у меня есть доля, которая объясняет мою проблему. Дайте мне знать, если требуется дополнительная информация. Итак, что мне здесь делать?

ответ

0

Как я вижу, вы делаете свой UIViewController в качестве rootController. Но если вы хотите увидеть панель навигации вверху, вам нужно создать экземпляр UINavigationController и инициализировать с помощью rootViewController, который является вашим HomeViewController.

Примечания: Вы должны сделать свой UINavigationController в качестве контроллера зрения корня, а не вашего HomeViewController

Edit:

 HomeViewController *loginController= (HomeViewController*)[mainStoryboard instantiateViewControllerWithIdentifier:@"HomeViewController"]; 
    CCKFNavDrawer *navController = (CCKFNavDrawer *)[[CCKFNavDrawer alloc]initWithRootViewController:loginController]; 
self.window.rootViewController=navController; 
+0

Я попытался это, но он выходит из строя приложения. Если вы видите мой метод 'ViewDidLoad', то есть' Delegate', называемый 'setCCKFNavDrawerDelegate', который устанавливает' HomeViewController' 'rootNav'. Где 'rootNav' является свойством класса CCKFNavDrawer. Дополнительную информацию см. В ссылке на библиотеку. Ошибка приложения с этой ошибкой: «Завершение приложения из-за неперехваченного исключения» NSInvalidArgumentException », причина: '- [UINavigationController setCCKFNavDrawerDelegate:]: непризнанный селектор, отправленный в экземпляр –

+0

, я посмотрю на него !! –

+0

Я обновил свой ответ, попробуйте –

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