0

我在 iOS Storybords 中有一个标签栏应用程序。UITabbarcontroller 连接到-->4 组(UInavigation 控制器--> UItableview 控制器)。每个 UITableviewcontroller 单元都连接到要推送的多个 UIviewcontroller。

在构建应用程序时 - 导航选项卡出现在视图控制器的顶部,没有任何问题。但底部有 4 个项目的 Tabbar 仅在第一个视图中可见。UIviewcontrollers 不显示 4 项标签栏!??。我已在属性检查器中将底部栏设置为选项卡栏。但它不起作用?

我相信它一定比我理解的要多。希望有人帮忙。

如何通过应用程序显示标签栏?

4

3 回答 3

1

您可以像这样添加标签栏:-

Appdelegate.h

#import <UIKit/UIKit.h>

@class StartingViewController;

@interface Appdelegate : NSObject <UIApplicationDelegate> {
    UIWindow *window;
    StartingViewController *viewController;

    UITabBarController *tabBarController;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet StartingViewController *viewController;

@property (nonatomic,retain) UITabBarController *tabBarController;

-(void)addTabBarToView;

@end

应用委托.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

    // Override point for customization after application launch.

    // Add the view controller's view to the window and display.
    [window addSubview:viewController.view];
    [window makeKeyAndVisible];

    [self addTabBarToView];

    return YES;
}

-(void)addTabBarToView{

    FirstController *first = [[FirstController alloc] initWithNibName:@"FirstController" bundle:nil];
    first.title = @"First";

    SecondController *second = [[SecondController alloc] initWithNibName:@"SecondController" bundle:nil];
    second.title = @"Second";

    ThirdController *three = [[ThirdController alloc] initWithNibName:@"ThirdController" bundle:nil];
    first.title = @"Third";

    Forthcontrooler *Four4 = [[Forthcontrooler alloc] initWithNibName:@"Forthcontrooler" bundle:nil];
    second.title = @"Secfor";





   UINavigationController *navigationController1 = [[UINavigationController alloc] initWithRootViewController:first];

   UINavigationController *navigationController2 = [[UINavigationController alloc]initWithRootViewController:second];

   UINavigationController *navigationController3 = [[UINavigationController alloc] initWithRootViewController:three];

   UINavigationController *navigationController4 = [[UINavigationController alloc]initWithRootViewController:Four4];



    tabBarController = [[UITabBarController alloc] init];        

    tabBarController.viewControllers = [NSArray arrayWithObjects:navigationController1,navigationController2,navigationController3,navigationController4,nil];

    [window addSubview:tabBarController.view];

}
于 2012-11-24T05:07:01.637 回答
1

我不完全确定您的设计,但这里有一些技巧希望能有所帮助。

故事板设计:

基本的标签栏应用程序布局通常从左到右看起来像这样,左侧的第一个控制器有一个小箭头,表示它是起始控制器。

  • 你的第一个控制器应该是标签栏控制器
  • 每个选项卡都应连接到导航控制器
  • 每个导航控制器都应该连接到一个或多个 UIViewControllers 或 UITableViewControllers。

现在,请注意虽然有高级配置,但这只是一般布局,可以很好地设置应用程序并为每个选项卡提供轻松的推送转换。

如果您的应用程序启动并显示选项卡栏,并且当您选择一个选项卡项时,它应该显示该选项卡的视图控制器。如果标签栏仍然存在,那么到目前为止您的状态都很好。如果您在该视图控制器上选择了某些内容并且它在屏幕上推送了一个新的视图控制器,并且当发生这种情况时您丢失了标签栏,那么很可能是这个问题: - 检查您的视图控制器并在对象检查器中查看复选标记称为“在推送时隐藏底部栏” - 如果选中 - 然后取消选中它。如果在那里找不到,请检查视图控制器的代码并查看启动方法,例如 view did load 语句:self.hidesBottomBarWhenPushed = YES; 如果您找到该命令,请将其注释掉或删除。

如果这是您的设计并且在您的应用程序中有意义,那么在某些视图控制器推送上隐藏标签栏是完全可以的。通常,为了用户体验,尽量避免它并在屏幕上保留标签栏是一个很好的做法,但有时屏幕大小等问题可能会导致开发人员在某些工作流程中隐藏它。

我希望这有助于并与您的问题相关联。如果没有,对不起。

于 2012-11-24T05:07:29.220 回答
0

UINavigationControllers放在 s 里面,UITabbarController而不是反过来

于 2012-11-23T22:49:08.100 回答