在选项卡栏控制器类型应用程序中切换UIViewController

时间:2010-08-09 04:27:18

标签: iphone uiviewcontroller uinavigationcontroller uitabbarcontroller

请原谅这个简单的问题,但是我想把头发拉出来试图抓住iPhone中的导航。

所以,我有一个带有UITabBar和3个UITabBarItems的Tab Bar Controller类型应用程序。我有第一个标签栏项目加载一种“主屏幕/欢迎”,在主屏幕上,有一个按钮。当用户单击该按钮时,我想打开一个不同的UIViewController(LoginViewViewController)以允许此人登录。

我基本上尝试切换UIViewController,然后当他们成功登录时,我想更改TabBarItems。

这是我在ViewController上连接到第一个TabBarItem的.m文件中的代码:

#import "LaunchViewViewController.h"
#import "LoginViewViewController.h"

@implementation LaunchViewViewController

@synthesize myLoginViewViewController;

- (IBAction)cmdRSVP_Click:(id)sender {

 //Try #1
 //[self addSubview:myLoginViewViewController.view];

 //Try #2
 //[[self navigationController] pushViewController:myLoginViewViewController animated:YES];

 //Try #3
 //LoginViewViewController *myLoginViewViewController2 = [[LoginViewViewController alloc] initWithNibName:@"LoginView" bundle:[NSBundle mainBundle]];
 //[self.navigationController pushViewController:myLoginViewViewController2 animated:YES];
 //[myLoginViewViewController2 release];
 //myLoginViewViewController2 = nil;

 //Try #4
 //This just changes my screen to all White (expect the TabBarNavigationController
 //[self.view removeFromSuperview];
 //[self.view insertSubview:self.myLoginViewViewController.view atIndex:0];


 // This displays without issue.
 [self displayMessage:@"RSVP Clicked":@"Switch to Login View"]; }

正如您所看到的,我已经尝试了4种不同的方法,我在各种教程中看到过。

在尝试1,2,3中:没有任何事情发生(没有崩溃或异常),但仍然显示警告消息框。

在尝试4中,标签栏控制器上方的屏幕区域变为白色,并显示警报消息,但它从不显示我的其他ViewController。

让我走上正轨的任何帮助都会很棒!!!

提前致谢! 杰森

1 个答案:

答案 0 :(得分:2)

我能够根据我提出的另一个问题来解决这个问题。

问题是我需要将UINavigation控制器连接到Tab Bar Item(而不是UIViewController)。然后UIViewController将成为UINavigation控制器的RootViewController,这将允许我使用pushViewController和popViewController方法。

注意:这是帮助我解决此问题的问题的链接: TableView Does NOT Switch to Detail View When Connected to Tab Bar Controller

杰森