как показать контроллер панели вкладок после запуска экрана входа в систему? - PullRequest
0 голосов
/ 15 декабря 2011

Это приложение на основе представления.

в файле 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 ]

1 голос
/ 15 декабря 2011

Один из способов сделать это - создать 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];
}

Надеюсь, это поможет!

1 голос
/ 15 декабря 2011

вы должны создать метод в 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];    
}
1 голос
/ 15 декабря 2011

Ваш вид входа в систему (или это контроллер, если у вас есть тот, который выглядит так, как будто у вас его нет) должен сообщить appDelegate, что нужно поменять RootViewController на taBarController.Вы НЕ хотите, чтобы в loginview пытались добавить tabBar как дочерний элемент.

...