5

我是 iPhone 开发的新手。我正在开发一个TabBarViewcontroller应用程序(iPhone 和 iPad),并在其中创建了一个LoginViewController和一个按钮操作。我的期望是单击该按钮后,控件将从 移动LoginViewControllerTabBarViewController. 在这TabBarViewcontroller我有 5 个标签栏(项目)视图控制器。是否可以?

如果可以,请分享您的想法。

4

4 回答 4

7

首先,UINavigationControllerUITabbarController你的MainWindow.xib和绑定IBOutlet到各自的领域.. ans设置LoginViewController为你的UINavigationController..的rootViewController

然后在didFinishLaunchingWithOptions方法中写这个..

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{
    [self.window setRootViewController:navController];
    [self.window makeKeyAndVisible];    
    return YES;
}

现在AppDelegate.m像这样创建其他方法..

-(void)loadApplication
{
    [navController pushViewController:tabbarController animated:NO];
}

在您的登录按钮操作.. 调用此方法如下..

-(IBAction)btnLoginTapped:(id)sender
{
    AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication]delegate];
    [appDelegate loadApplication];
}
于 2012-11-20T09:28:12.593 回答
5

所以在按钮操作中尝试以下代码

AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; 
appDelegate.window.rootViewController = tabBarController;
于 2012-11-20T09:20:01.030 回答
5

使用此方法从任何其他视图添加标签栏..

    -(void)addTabBarControllerInwindow 
    {
        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationDuration:1.0];
        [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.window cache:YES];

        [self.navigationController.view removeFromSuperview];
        [self.window addSubview:tabBarController.view];
        [UIView commitAnimations];
    }

将此方法放在AppDelegate.m文件和任何 viewController 中,例如在 LoginView 控制器中,当您想添加标签栏时,然后声明委托对象并调用此方法,如下所示。

 AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
 [appDelegate addTabBarControllerInwindow];
于 2012-11-20T09:37:08.517 回答
1

我想你可能会在一个项目中寻找多个 VC。因此,在 appDelegate 中为 loginVC 和其他 VC(用于 tabbar)声明并初始化一个 VC,登录成功后调用以下函数。

在启动时将 LoginVC 设为 RootViewController

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{// declare LoginVC and make it rootViewController
 self.window.rootViewController = self._loginVCObj;
    [self.window makeKeyAndVisible];
}

#pragma mark- Continue to next screen after successful Login

-(void) continueToNextView
{   // Handle UI after Login like.
 [_loginVCObj._indicator stopAnimating];
    [_loginVCObj._loginButton setEnabled:YES];
//add the VC to the tabbar 
    self._tabBarController.viewControllers = [NSArray arrayWithObjects:self.navigationControllerList,_favItemListNavObj, _toDoHereVC, _settingNavObj, nil]; 
// make tabbar as rootViewController
     self.window.rootViewController = self._tabBarController;
}
于 2012-11-20T11:30:13.947 回答