Как показать контроллер панели вкладок после запуска экрана входа в систему?
Это приложение на основе просмотра.
в файле Delegate.m я сделал так, чтобы изначально запустить экран входа в систему:
- (void)applicationDidFinishLaunching:(UIApplication *)application
{
[window addSubview:viewController.view];
[window makeKeyAndVisible];
LoginView *loginView=[[LoginView alloc]initWithNibName:@"LoginView" bundle:nil];
[window addSubview:loginView.view];
}
Добавив приведенный выше код, я успешно запустил экран входа в систему, но в нижней части экрана входа в систему я вижу пропущенное место.
Как запустить контроллер панели вкладок после успешного входа в систему?
я создал метод с именем login в моем файле LoginView.m:
-(void)login
{
if(login)
{
TabBarController *tabBarController = [[TabBarController alloc] initWithNibName:@"TabBarController" bundle:nil];
[self.view addSubView: aTabBarController.view];
}
[aTabBarController release];
Пожалуйста, помогите мне с этим с соответствующим кодом.
3 ответа
Вы должны создать метод в appDelegate как... и в appDelegate.h вы должны создать объект, подобный этому
UITabBarController *Obj_tabbar;
а затем в файле.m,
-(void) switchToTabbarController
{
Obj_tabbar.delegate = self;
Obj_tabbar.selectedIndex = 0;
Tracking_HomeVC *obj = [[Tracking_HomeVC alloc]init];
[self tabBarController:Obj_tabbar didSelectViewController:obj];
[self.window addSubview:Obj_tabbar.view];
}
// На этом этапе Tracking_HomeVC является первым контроллером представления TabbarController. и он будет добавлен в окно.
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
if([tabBarController selectedIndex] == 0)
{
//Write your code here to do with the first view controller object.
}
}
а затем вызвать его из вашего LoginView как..
-(void)LoginPressed
{
AppAppDelegate *delegate =(AppAppDelegate *) [[UIApplication sharedApplication] delegate];
[delegate switchToTabbarController];
}
Ваш вид входа в систему (или его контроллер, если у вас есть тот, который выглядит так, как будто у вас его нет) должен сообщить appDelegate, что нужно поменять RootViewController на taBarController. Вы НЕ хотите, чтобы login view пытался добавить tabBar как дочерний элемент.
Один из способов сделать это - создать tabbarcontroller, как обычно, в вашем appdelegate и установить его как rootviewcontroller:
TOTabBarController *tabBarController = [[TOTabBarController alloc] init];
UIViewController *vc1 = [[UIViewController alloc] initWithNibName:nil bundle:nil];
UIViewController *vc2 = [[UIViewController alloc] initWithNibName:nil bundle:nil];
UIViewController *vc3 = [[UIViewController alloc] initWithNibName:nil bundle:nil];
UINavigationController *vc2_nc = [[UINavigationController alloc] initWithRootViewController:vc2];
UINavigationController *vc3_nc = [[UINavigationController alloc] initWithRootViewController:vc3];
NSArray *viewControllers = [NSArray arrayWithObjects:vc1, vc2_nc, vc3_nc, nil];
[tabBarController setViewControllers:viewControllers];
//set tabbarcontroller as rootviewcontroller
[[self window] setRootViewController:tabBarController];
Затем отобразите экран входа в систему модально (без анимации), если пользователь не вошел в систему:
if (not logged in) {
UIViewController *lvc_nc = [[UIViewController alloc] init];
[[[self window] rootViewController] presentModalViewController:lvc_nc animated:NO];
}
Надеюсь, это поможет!