2015-03-03 103 views
0

我有一个标签栏控制器与三个选项卡,我设置编程。两个第一个只是UIViewController,但第三个是我从另一个故事板获得的UISplitViewController。一切都很好,但是当我在纵向模式下显示主视图时,这个显示在标签栏的顶部。我想继续显示完整的标签栏。从分离视图控制器的主显示在标签栏

enter image description here

试图展示从在主视图中的项目栏按钮的UIAlertController(该按钮不会在图像中存在)作为酥料饼被显示在主视图后面时,这也产生问题。

有谁知道我该如何解决这个问题?

我把他们的方式编程是这样(的情况下,它可以帮助):

UIViewController *view1 = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"FirstView"]; 
UIViewController *view2 = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"SecondView"]; 

UIViewController *view3 = [[UIStoryboard storyboardWithName:@"StoryboardSplit" bundle:nil] instantiateViewControllerWithIdentifier:@"MySplitView"]; 

UISplitViewController *splitViewController = (UISplitViewController *)view3; 
UINavigationController *navigationController = [splitViewController.viewControllers lastObject]; 
navigationController.topViewController.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem; 
splitViewController.delegate = self; 

NSMutableArray *tabViewControllers = [[NSMutableArray alloc] init]; 
[tabViewControllers addObject:view1]; 
[tabViewControllers addObject:view2]; 
[tabViewControllers addObject:splitViewController]; 

[self setViewControllers:tabViewControllers]; 

view1.tabBarItem = 
[[UITabBarItem alloc] initWithTitle:@"view1" 
           image:[UIImage imageNamed:@"view1"] 
           tag:1]; 
view2.tabBarItem = 
[[UITabBarItem alloc] initWithTitle:@"view2" 
           image:[UIImage imageNamed:@"view2"] 
           tag:2]; 
view3.tabBarItem = 
[[UITabBarItem alloc] initWithTitle:@"view3" 
           image:[UIImage imageNamed:@"view3"] 
           tag:3]; 
+0

我认为没关系。您可以左滑动来隐藏它。在横向方向一切都很好。 – 2015-03-03 14:51:03

+0

根据文档,'UISplitViewController'必须始终是根视图控制器。在你的情况下,选项卡视图控制器是根。 – HAS 2015-03-03 15:40:45

+0

UISplitViewController不必总是iOS 8的根。请参阅[Apple开发者论坛](https://forums.developer.apple.com/thread/15118) – user3847320 2015-10-30 18:56:41

回答

0

尝试导入QuartzCore,然后设置TabBarController.tabBar.layer.zposition = 1。当然像更换了的TabBar必需品与您的标签栏的名称等。

这是斯威夫特的作品,然而通过你自己的倡议,你可以将其工作到Obj-C

+0

谢谢。它会使工作,但如果主视图是一个长列表,它不会隐藏最后一行的一部分? – fray88 2015-03-03 15:23:07

+0

我不这么认为,我没有在标签栏中使用过它,但是我已经在导航栏中进行了设置,并且将其设置为所有内容的最前面,直到另行告知为止。 – 2015-03-03 15:26:40

+1

您是否足够清楚您在标签栏上设置zPosition的位置?例如它是否在UISplitViewControllerDelegate方法中?也许在UITabBarController的viewDidLoad()中?我曾尝试这个建议是很多地方,但主视图控制器继续出现在标签栏控制器上方。 – user3847320 2015-10-30 18:40:07

相关问题