带详细视图底部的工具栏/ tabbar的UISplitView
问题描述:
因此,我开始使用iPad的标准Split View应用程序。左侧为根视图,右侧为详细视图。细节视图的顶部有一个工具栏。带详细视图底部的工具栏/ tabbar的UISplitView
我想要添加的是一个标签栏到详细视图的底部,并在工具栏tabbar之间的详细信息视图中加载标签。
这里是问题,我添加另一个视图之间加载标签,如果是的话,我怎么得到它调整大小和尊重工具栏和标签栏高度。
清除?
希望有人能指出我正确的方向。例子会很棒,网络上的每个例子似乎都是开箱即用的世界风格。
答
是的,答案真的很简单。 UITabBarControllers像SplitViewControllers是苹果公司所希望的唯一的根视图控制器,因此你不能在另一个视图中嵌套TabBarController,但是你可以在视图中嵌套一个UITabBar。
我将Tabbar添加到底部的详细信息视图,顶部的导航栏以及它们之间的占位符视图。所有在Interface Builder!中,您都希望使用占位符视图上的autosize切换所有内容。
接下来,实现UITabBarDelegate。为此,您需要:
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item {
从,你可以用item.tag如果你给其中每个项目在Interface Builder一个独特的标签会让你知道用户点击该选项卡
。我设置定义的值矿:
#define VIEW_TAB_A 0
#define VIEW_TAB_B 1
#define VIEW_TAB_C 2
然后,那么你将要...好最好的,我只是让你看到
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item {
[self switchToView:item];
}
- (void) switchToView : (UITabBarItem*) item {
if(currentViewController != nil) {
[currentViewController viewWillDisappear:NO];
[currentViewController.view removeFromSuperview];
}
switch(item.tag) {
case VIEW_TAB_A:
currentViewController = self.viewA;
break;
case SCAN_VIEW_TAB_B:
currentViewController = self.viewB;
break;
case PROMOTIONS_VIEW_TAB_C:
currentViewController = self.viewC;
break;
}
UIView *aView = currentViewController.view;
aView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
aView.frame = placeholderView.frame;
[currentViewController viewWillAppear:NO];
[self.view insertSubview:aView aboveSubview:placeholderView];
if(currentViewController != nil) {
[currentViewController viewDidDisappear:NO];
}
[currentViewController viewDidAppear:NO];
}
记住的Alloc的意见(viewA,viewB,viewC)第一在你viewDidLoad和显然释放dealloc。还要注意autoresizingMask!
希望这可以帮助别人。