0

我构建了我的第一个 iPhone 应用程序,但在切换视图时遇到了问题。首先,我有两个通过“presentModalViewController:animated:”切换的视图(登录、注册)。

但是,如果有人登录,则必须有一种新的视图。我想在底部有一个 UITabBar(标签栏控制器)。但这不起作用。我尝试创建一个新的 AppDelegate,这样我就可以使用像这样需要 AppDelegate 的教程:

http://www.youtube.com/watch?v=LBnPfAtswgw&feature=player_embedded

切换到新控制器的过程如下:

startViewController = [[StartViewController alloc] initWithNibName:@"StartView" bundle:nil];
[UIView beginAnimations:@"View Curl" context:nil];
[UIView setAnimationDuration:2.0];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.view cache:YES];
[self.view addSubview:startViewController.view];
[UIView commitAnimations];

屏幕是白色的,因为显示的视图是我的 StartView.xib 中的 UIView。我有新的 AppDelegate、文件的所有者、视图、TabBarController。但只有 UIView 被加载,而不是 TabBarController。

你知道我怎么能解决这个问题吗?

谢谢和最好的问候。

4

1 回答 1

3

我可能会建议您从 TabBarController 开始,如果未设置用户名/密码,则活动 ViewController 执行 presentModalViewController:animated: 以在模式模式下显示登录/注册视图控制器(隐藏底层 TabBarController)。

这是一些以编程方式执行此操作的示例代码。

- (void)applicationDidFinishLaunching:(UIApplication *)application {    
 self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
 [window setBackgroundColor:[UIColor whiteColor]];

 tabBarController = [[UITabBarController alloc] init];


 aViewController = [[aViewController alloc] init];
 UINavigationController *aNavController = [[[UINavigationController alloc] initWithRootViewController:aViewController] autorelease];
 aNavController.navigationBar.barStyle = UIBarStyleBlackTranslucent;
 [aViewController release];

 tabBarController.viewControllers = [NSArray arrayWithObjects: aNavController, nil];

 // Add the tab bar controller's current view as a subview of the window
    [window addSubview:tabBarController.view];

 if(userNotLoggedIn){
     [self displayLoginViewController];
 }


    [window makeKeyAndVisible];
}

- (void)displayLoginViewController {
 LoginViewController *controller = [[LoginViewController alloc] init];
 // setup controller
 [self.tabBarController presentModalViewController:controller animated:NO];
 [controller release];
}
于 2009-12-15T14:44:31.957 回答