我是 iPhone 开发的新手。我正在开发一个TabBarViewcontroller
应用程序(iPhone 和 iPad),并在其中创建了一个LoginViewController
和一个按钮操作。我的期望是单击该按钮后,控件将从 移动LoginViewController
到TabBarViewController
. 在这TabBarViewcontroller
我有 5 个标签栏(项目)视图控制器。是否可以?
如果可以,请分享您的想法。
我是 iPhone 开发的新手。我正在开发一个TabBarViewcontroller
应用程序(iPhone 和 iPad),并在其中创建了一个LoginViewController
和一个按钮操作。我的期望是单击该按钮后,控件将从 移动LoginViewController
到TabBarViewController
. 在这TabBarViewcontroller
我有 5 个标签栏(项目)视图控制器。是否可以?
如果可以,请分享您的想法。
首先,UINavigationController
在UITabbarController
你的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];
}
所以在按钮操作中尝试以下代码
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
appDelegate.window.rootViewController = tabBarController;
使用此方法从任何其他视图添加标签栏..
-(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];
我想你可能会在一个项目中寻找多个 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;
}