0

我想根据用户选择的选项显示 3 个不同的屏幕

我有 3 个选项的屏幕

它们是 1. 类型处方 2.Scribble 处方 3. 处方表

我如何切换这 3 个视图?

谢谢

4

1 回答 1

1

像 SplitViewControllers 这样的 UITabBarControllers 仅作为根视图控制器,因此您不能将 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];

这些是我从类似问题中学到的笔记,下次更努力搜索

于 2012-08-06T20:05:47.890 回答