Я хочу реализовать TabBarController и добавить представление контроллера навигации, но напрасно - PullRequest
0 голосов
/ 02 октября 2011

Я знаю, как добавить TabBar с двумя кнопками TabBar на нем с помощью Interface Builder.И я связываю каждую кнопку с контроллером навигации.

Теперь я хочу научиться делать все программно.Теперь я могу видеть TabBar в симуляторе, но без кнопок на нем.Может кто-нибудь, пожалуйста, помогите мне с этим.Спасибо!

Вот TabBarAppDelegate.h.

#import <UIKit/UIKit.h>
@interface TabBarAppDelegate : NSObject <UIApplicationDelegate> 
{
    UIWindow *window;
    UITabBarController *tabBarController;
    IBOutlet UINavigationController *navigationController1;
    IBOutlet UINavigationController *navigationController2;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) UITabBarController *tabBarController;
@property (nonatomic, retain) IBOutlet UINavigationController *navigationController1;
@property (nonatomic, retain) IBOutlet UINavigationController *navigationController2;
@end

Вот TabBarAppDelegate.m.

#import "TabBarAppDelegate.h"
#import "FirstViewController.h"
#import "SecondViewController.h"
@implementation TabBarAppDelegate
@synthesize window=window;
@synthesize tabBarController;
@synthesize navigationController1;
@synthesize navigationController2;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    tabBarController = [[UITabBarController alloc]init];   
    FirstViewController *firstViewController = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];
    firstViewController.title = @"First";
    [self.navigationController1 pushViewController:firstViewController animated:NO];

    SecondViewController *secondViewController = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
    secondViewController.title = @"NavCal";
    [self.navigationController2 pushViewController:secondViewController animated:NO];

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

    [window addSubview:tabBarController.view];
    [self.window makeKeyAndVisible];
    [firstViewController release];
    [secondViewController release];
    return YES;
}

- (void)dealloc
{
    [tabBarController release];
    [window release];
    [super dealloc];
}

1 Ответ

1 голос
/ 02 октября 2011

Похоже, вы не инициализируете контроллеры вида навигации.Проверьте, будет ли это работать:

TabBarAppDelegate.h

  • Удалите свойства navigationController1 и navigationController2

TabBarAppDelegate.m

  • Заменить

    [self.navigationController1 pushViewController:firstViewController animated:NO];
    

на

UINavigationController *navigationController1 = [[UINavigationController alloc] initWithRootViewController:firstViewController];
  • Заменить

    [self.navigationController2 pushViewController:secondViewController animated:NO];
    

с

UINavigationController *navigationController2 = [[UINavigationController alloc] initWithRootViewController:secondViewController];
  • Отключить navigationController1 и navigationController2 после добавления их на вкладку BarController
...