presentViewController没有显示tabbar

时间:2012-07-10 14:30:19

标签: iphone objective-c uitabbarcontroller

我有一个iPhone应用程序,在我的所有视图上都使用了一个标签栏。 此外,我的第一个视图控制器没有navigationBarController,但我的第二个视图,以及tabbar。

我的第二个视图控制器是一个tableview,当我点击其中一个单元格时,我想要被带到第一个视图控制器(用它传递一个参数)。

我已经尝试了几种方法,这种方式都有效,但不是。

secondViewController.m
FirstViewController *firstViewController = [[FirstViewController alloc] initWithNibName:@"FirstView" bundle:[NSBundle mainBundle]];
[firstViewController passThisAlong:@"id"];

//[self presentViewController:firstViewController animated:YES completion:nil]; //1
[self.navigationController pushViewController:firstViewController animated:YES]; //2
//[self.tabBarController presentViewController:firstViewController animated:YES completion:nil]; //3
[firstViewController release];
firstViewController = nil;

正如您在上面所看到的,我尝试了3种不同的方法来获取第一个视图控制器。 第二个加载第一个视图,在第二个视图中向下钻取,因为它保持nagigationBarController(即使第一个视图没有一个),后退按钮到第二个视图。

另外两个做彼此相同的事情。它是第一个视图(没有navigationBar),但是,没有tabbar,第一个视图的内容已经向上移动了大约tabbar的高度,而它的位置只是黑度。

我希望这一切都有道理。我只是希望当有人选择表格中的单元格时,能够从第二个视图进入第一个视图,就好像我单击了标签栏中的图标一样。

我在文档中看到过 'On iPhone and iPod touch, the presented view is always full screen. On iPad, the presentation depends on the value in the modalPresentationStyle property.'不确定这是否与我的问题有关,如果有问题,是否有解决方法。

非常感谢,

2 个答案:

答案 0 :(得分:1)

这是正常的,模态视图应该以这种方式工作

来自Apple Documentation

  

呈现视图控制器的功能是您可以使用的工具,用于中断当前工作流程并显示一组新视图。最常见的是,应用程序将视图控制器作为临时中断提供,以便从用户获取关键信息。但是,您也可以使用呈现的视图控制器在特定时间为您的应用程序实现备用接口。

在didSelectRowAtIndexPath中,您可以使用类似

的内容
YourAppNameDelegate *appDelegate = (YourAppNameDelegate *)[[UIApplication sharedApplication] delegate];
[appDelegate tabBarController].selectedIndex = 0;

答案 1 :(得分:1)

目前的模态视图以这种方式工作。为什么不能使用基于Tab的应用程序?