简体   繁体   English

TabBar 和导航控制器

[英]TabBar and Navigation Controller

Hi I am new to iOS and I am trying to display a Navigation Controller in a TabBar based app.嗨,我是 iOS 新手,我正在尝试在基于TabBar的应用程序中显示导航控制器。

Here is is what I got: H file:这是我得到的: H文件:

#import <UIKit/UIKit.h>



@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;

@property (strong, nonatomic) UITabBarController *tabBarController;

@property (strong, nonatomic) UINavigationController *navigationController;

@end

M file: M文件:

@implementation AppDelegate


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

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    UIViewController *viewController1 = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];
    UIViewController *viewController2 = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
    UIViewController *viewController3 = [[ThirdViewController alloc] initWithNibName:@"ThirdViewController" bundle:nil];
    UIViewController *viewController4 = [[FourthViewController alloc] initWithNibName:@"FourthViewController" bundle:nil];
    UIViewController *viewController5 = [[FifthViewController alloc] initWithNibName:@"FifthViewController" bundle:nil];

    self.tabBarController = [[UITabBarController alloc] init];
    self.tabBarController.viewControllers = @[viewController1, viewController2,viewController3,viewController4,viewController5];



    self.navigationController = [[UINavigationController alloc] initWithRootViewController:viewController5];
    self.window.rootViewController = self.navigationController;
    [self.window makeKeyAndVisible];

    self.window.rootViewController = self.tabBarController;
    [self.window makeKeyAndVisible];
    return YES;

}

Instead of adding viewController5 to the tab bar controller's view controllers,, add the navigation controller.不是将 viewController5 添加到选项卡栏控制器的视图控制器,而是添加导航控制器。

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

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    UIViewController *viewController1 = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];
    UIViewController *viewController2 = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
    UIViewController *viewController3 = [[ThirdViewController alloc] initWithNibName:@"ThirdViewController" bundle:nil];
    UIViewController *viewController4 = [[FourthViewController alloc] initWithNibName:@"FourthViewController" bundle:nil];
    UIViewController *viewController5 = [[FifthViewController alloc] initWithNibName:@"FifthViewController" bundle:nil];

    self.tabBarController = [[UITabBarController alloc] init];

    self.navigationController = [[UINavigationController alloc] initWithRootViewController:viewController5];
    self.tabBarController.viewControllers = @[viewController1, viewController2,viewController3,viewController4,self.navigationController];

    self.window.rootViewController = self.tabBarController;
    [self.window makeKeyAndVisible];
    return YES;

}

This doesn't work.这不起作用。 Mixing the view controllers with the navigation controller gives you view controllers without nav and a nav controller without a view controller.将视图控制器与导航控制器混合在一起,可以为您提供没有导航的视图控制器和没有视图控制器的导航控制器。 You need a nav controller for each vc and then create an array of those nav controllers.每个 vc 都需要一个导航控制器,然后创建这些导航控制器的数组。

Here is an answer that works: How to add UITabBarController programmatically (no xib file or storyboard)这是一个有效的答案: How to add UITabBarController programmatically (no xib file or storyboard)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM