1

我显示的UITabBarController内一个UITableViewController正被模态呈现:UITableViewController中的导航项不显示?

-(IBAction)arButtonClicked:(id)sender{ 

    //this is a uitableviewcontroller 
    ARViewController* arViewController = [[[ARViewController alloc] initWithNibName:@"ARViewController" bundle:nil]autorelease]; 

    LeaderBoardTableViewController* lbViewController = [[[LeaderBoardTableViewController alloc] initWithNibName:@"LeaderBoardTableViewController" bundle:nil]autorelease]; 
    lbViewController.title = @"Leaderboard"; 

    arTabBarController = [[UITabBarController alloc] initWithNibName:nil bundle:nil]; 
    arTabBarController.viewControllers = [NSArray arrayWithObjects:arViewController, lbViewController, nil]; 
    arTabBarController.selectedViewController = arViewController; 

    [self presentModalViewController:arTabBarController animated:YES]; 
} 

在我viewDidLoad中的arViewController方法,我设置的导航项目:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    // Uncomment the following line to preserve selection between presentations. 
    self.clearsSelectionOnViewWillAppear = NO; 
    self.title = @"AR"; 

    leaderBoardButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemOrganize 
                    target:self 
                    action:@selector(leaderBoardButtonClicked:)]; 

    self.navigationItem.rightBarButtonItem = leaderBoardButton; 

} 

我的导航栏不它出现在UITabBarController的内部时,但当我推送视图本身时,我能够看到它。

我错过了什么?

回答

0

我需要添加一个UINavigationBar的:

ARViewController* arViewController = [[[ARViewController alloc] initWithNibName:@"ARViewController" bundle:nil]autorelease]; 
    UINavigationController *arNavController = [[UINavigationController alloc] initWithRootViewController:arViewController]; 

    LeaderBoardTableViewController* lbViewController = [[[LeaderBoardTableViewController alloc] initWithNibName:@"LeaderBoardTableViewController" bundle:nil]autorelease]; 
    lbViewController.title = @"Leaderboard";  
    UINavigationController *lbNavController = [[UINavigationController alloc] initWithRootViewController:lbViewController]; 

    arTabBarController = [[UITabBarController alloc] init];//initWithNibName:nil bundle:nil]; 
    arTabBarController.viewControllers = [NSArray arrayWithObjects:arNavController, lbNavController, nil]; 
    arTabBarController.selectedViewController = arNavController; 

    [self presentModalViewController:arTabBarController animated:YES]; 
+1

dammut,错过了6秒:( – Rudiger 2010-06-16 02:57:08

2

嘿,我已经被这个难住了。你需要做的是发送rootViewController。

我从来没有用于任何一个的TabBar除了主屏幕上,但我们的代码可能会是这样的:

后arTabBarController.selectedViewController = arViewController;

UINavigationController *navController = [[[UINavigationController alloc] initWithRootViewController: arTabBarController] autorelease]; 
[self presentModalViewController: navController animated:YES]; 

就像我说我没有用的TabBar做,但我敢肯定它会沿着这些路线

0

有一个简单的解决方案的东西,摆在视图中设置将出现

-(void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 

    [self.navigationController setNavigationBarHidden:NO animated:animated]; 
} 

希望它能帮助一些新手;