Приложение TabBar с навигационной панелью - PullRequest
1 голос
/ 04 ноября 2011

Я создаю приложение, основанное на TabBar. На одной из вкладок будет отображаться TableView, и мне бы хотелось, чтобы Навигационная панель была вверху.

Однако мне нужно локализовать все в этом приложении на несколько языков, поэтому это нужно сделать в коде.

У меня настроена панель вкладок в AppDelegate;

@implementation AppDelegate

@synthesize window = _window;
@synthesize tabBarController = _tabBarController;



- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    UIViewController *viewController1 = [[HomeViewController alloc] initWithNibName:@"HomeView" bundle:nil];
    UIViewController *viewController2 = [[RecycleViewController alloc] initWithNibName:@"RecycleView" bundle:nil];
    UIViewController *viewController3 = [[SettingsViewController alloc] initWithNibName:@"SettingsView" bundle:nil];
    UIViewController *viewController4 = [[SettingsViewController alloc] initWithNibName:@"SettingsView" bundle:nil];

    self.tabBarController = [[UITabBarController alloc] init];
    self.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1, viewController2,viewController3, viewController4, nil];
    self.window.rootViewController = self.tabBarController;
    [self.window makeKeyAndVisible];
    return YES;
}

Каждое из окон имеет код для информации на вкладке.

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        self.title = NSLocalizedString(@"Home", @"Home");
        self.tabBarItem.image = [UIImage imageNamed:@"home"];
    }
    return self;
}

Пока все хорошо, но для RecyclingView (TableView) нужна панель навигации, где я могу установить заголовок, используя NSLocalizedString.

Буду очень признателен за помощь.

Ответы [ 3 ]

5 голосов
/ 04 ноября 2011

вам нужно добавить UINavigationController во второй индекс ваших tabBarController viewControllers вместо добавления контроллера представления -

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    UIViewController *viewController1 = [[HomeViewController alloc] initWithNibName:@"HomeView" bundle:nil];
    UIViewController *viewController2 = [[RecycleViewController alloc] initWithNibName:@"RecycleView" bundle:nil];
    UIViewController *viewController3 = [[SettingsViewController alloc] initWithNibName:@"SettingsView" bundle:nil];
    UIViewController *viewController4 = [[SettingsViewController alloc] initWithNibName:@"SettingsView" bundle:nil];

    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:viewController2];

    self.tabBarController = [[UITabBarController alloc] init];
    self.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1, navController,viewController3, viewController4, nil];
    self.window.rootViewController = self.tabBarController;
    [self.window makeKeyAndVisible];
    return YES;
}

, чтобы установить заголовок на панели навигации, который вы можетенапишите это в своем RecycleViewController viewDidLoad

[self.navigationItem setTitle:@"title"];
0 голосов
/ 07 марта 2013

Ответ для xcode 4.3.2:

выделите UINavigationBar в RecycleViewController.m следующим образом:

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:self];
self.view addSubview:navController.view;

Но есть ошибка, из-за которой на панели навигации вверху отображается пробел, около 10 пикселей.

Итак, вот еще одно решение: используйте конструктор xib, добавьте панель навигации из библиотеки в верхней части окна RecycleViewController.xib, нажмите ctrl + «Элемент навигации», укажите RecycleViewController.h, чтобы вставить IBOutlet, тогда у вас будет хорошо выглядящая панель навигации для отображения. *

0 голосов
/ 04 ноября 2011

Вы можете локализовать xibs с помощью Interface Builder, поэтому вам не нужно делать это программно.

http://www.icanlocalize.com/site/tutorials/iphone-applications-localization-guide/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...