UINavigation не работает в моем приложении iphone после запуска контроллера корневого представления
Я разрабатываю приложение IOS для iPhone. Я столкнулся с проблемой с экраном входа в систему. Я разработал приложение withoughtlogin screen.but теперь я хочу дать возможность входа в систему сначала, а после входа в систему я хочу показать свои действительные экраны приложения.
так что я сделал с кодом следующим образом...
Прежде всего, с помощью экрана входа в систему функция, которую я вызываю в 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.
м файл
Теперь я хочу показать экран входа в систему, поэтому я сделал один вход 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];
я знаю, что допустил какую-то глупую ошибку где-то в коде, так что кто-нибудь может подсказать мне, как решить эту проблему..
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;
}
Тогда кнопка ibaction
- (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];
}