TabBar和导航控制器

问题描述 投票:2回答:2

[嗨,我是iOS的新手,我正在尝试在基于TabBar的应用程序中显示导航控制器。

这是我得到的: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文件:

@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;

}
ios objective-c uinavigationcontroller tabbar
2个回答
2
投票

不是将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;

}

0
投票

这不起作用。将视图控制器与导航控制器混合使用,可以为您提供不带导航器的视图控制器和不带视图控制器的导航器。您需要为每个vc设置一个导航控制器,然后创建这些导航控制器的数组。

以下是有效的答案:How to add UITabBarController programmatically (no xib file or storyboard)

© www.soinside.com 2019 - 2024. All rights reserved.