我想显示3个不同的屏幕,具体取决于用户选择的选项
他们是1.类型处方2.Scribble处方3.处方表
如何切换那些3的视图?
由于
答案 0 :(得分:1)
像SplitViewControllers这样的UITabBarControllers只是Root View Controller,因此你不能在另一个视图中嵌套TabBarController,但是你可以在视图中嵌套UITabBar。
我将Tabbar添加到底部的详细信息视图,顶部的导航栏,然后是它们之间的占位符视图。全部在Interface Builder!中,您将需要在占位符视图上使用自动调整大小打开所有内容。
接下来,实现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];
} 这些是我从类似问题中学到的笔记,下次更难以搜索