UINavigation не работает в моем приложении для iphone после смены контроллера корневого представления

Я разрабатываю приложение ios для iphone. Столкнулся с проблемой экрана входа в систему. Я разработал приложение без экрана входа в систему. Но теперь я хочу сначала предоставить возможность входа в систему, а после входа я хочу показать свои фактические экраны приложения.

так что я сделал с кодом следующим образом...

Прежде всего, без экрана входа в систему функция, которую я вызываю в appdeleget.m, выглядит следующим образом.

-(bool)DeafultSideBar{

    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    // Override point for customization after application launch.
    ViewController *homeViewController = [[ViewController alloc]init];
    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:homeViewController];
      [navController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navigationbar.png"] forBarMetrics:UIBarMetricsDefault];

    SlideTabViewController *rootController = [[SlideTabViewController alloc] initWithRootViewController:navController];
    _viewController = rootController;

    LeftSlideViewController    *leftController = [[LeftSlideViewController alloc] init];
    rootController.leftViewController = leftController;
    // [FBLoginView class];

    self.window.rootViewController = rootController;

    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];

       return YES;


}

это функция, которую я вызываю из файла (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions method of AppDelegete.m

теперь я хочу показать экран входа в систему, поэтому я сделал один вход в систему Viewcontroller, а затем я изменил свой -

(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

метод с этим..

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{


    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    LogInViewController *logInViewController = [[LogInViewController alloc]init];


    self.window.rootViewController = logInViewController;

    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];

    return YES;




}

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

- (IBAction)SignInCalled:(id)sender {
    AppDelegate *appdelegete=[[AppDelegate alloc]init];

    appdelegete.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    // Override point for customization after application launch.

    ViewController *homeViewController = [[ViewController alloc]init];
    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:homeViewController];
    [navController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navigationbar.png"] forBarMetrics:UIBarMetricsDefault];

    SlideTabViewController *rootController = [[SlideTabViewController alloc] initWithRootViewController:navController];
    _viewController = rootController;

    LeftSlideViewController    *leftController = [[LeftSlideViewController alloc] init];
    rootController.leftViewController = leftController;



    [UIView beginAnimations:@"flipping view" context:nil];
    [UIView setAnimationDuration:0.8];
    [UIView setAnimationCurve:UIViewAnimationCurveLinear];
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.view cache:YES];
    //[self presentModalViewController:rootController animated:YES];
    appdelegete.window.rootViewController = rootController;

    appdelegete.window.backgroundColor = [UIColor whiteColor];
    [appdelegete.window makeKeyAndVisible];
    [UIView commitAnimations];



    // [FBLoginView class];




}

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

 ViewController *HomeView=[[ViewController alloc]initWithNibName:@"ViewController" bundle:nil];
        [self.navigationController pushViewController:HomeView animated:YES];
        UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:HomeView];

        [menuController setRootController:navController animated:YES];

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


person User 1531343    schedule 08.06.2013    source источник


Ответы (1)


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

Сначала делегат приложения

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  LogInViewController *logInViewController = [[LogInViewController alloc]init];

  self.window.rootViewController = logInViewController;
  self.window.backgroundColor = [UIColor whiteColor];
  [self.window makeKeyAndVisible];

  return YES;
}

Затем кнопка iдействие

- (IBAction)SignInCalled:(id)sender 
{
  ViewController *homeViewController = [[ViewController alloc]init];

  SlideTabViewController *rootController = [[SlideTabViewController alloc] initWithRootViewController:homeViewController];

  LeftSlideViewController    *leftController = [[LeftSlideViewController alloc] init];
  rootController.leftViewController = leftController;

  UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:rootController];

  self.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
  [self presentViewController:navController animated:YES completion:NULL];

  // [FBLoginView class];
}
person Adithya    schedule 08.06.2013