Как программно установить изображение по умолчанию для элемента вкладки? - PullRequest
0 голосов
/ 09 декабря 2010

Я создаю панель вкладок с 5 элементами вкладок.Я создал вкладку программно.Я хочу установить изображение по умолчанию (Дополнительно) на элемент панели вкладок.Если я создаю вкладку через IB, я бы выбрал идентификатор как «Дополнительно», но как это сделать программно?

1 Ответ

0 голосов
/ 09 декабря 2010

Для этого вам нужно создать класс, родительским классом которого будет UITabBar.

Вот его файл .h:

    #import <UIKit/UIKit.h>


    @interface ImageTabBar : UITabBar 
    {

    }

    @end

А вот его файл .m:

    #import "ImageTabBar.h"
    #import "GlobalVars.h"

    @implementation ImageTabBar

    - (void) drawRect:(CGRect)rect
    {
        UIImage *tabImage;
        switch (intTabBarSelectedIndex) 
        {
            case 0:
                tabImage=[UIImage imageNamed:@"TabBarImageTwitter.png"];
                [tabImage drawAtPoint:CGPointMake(0, 0)];
                break;
            case 1:
                tabImage=[UIImage imageNamed:@"TabBarImageCalender.png"];
                [tabImage drawAtPoint:CGPointMake(0, 0)];
                break;

            case 2:
                tabImage=[UIImage imageNamed:@"TabBarImageStanding.png"];
                [tabImage drawAtPoint:CGPointMake(0, 0)];
                break;

            case 3:
                tabImage=[UIImage imageNamed:@"TabBarImageNews.png"];
                [tabImage drawAtPoint:CGPointMake(0, 0)];
                break;

            case 4:
                tabImage=[UIImage imageNamed:@"TabBarImagePhotos.png"];
                [tabImage drawAtPoint:CGPointMake(0, 0)];
                break;

            default:
                break;
        }
    }

    - (void)dealloc 
    {
        [super dealloc];
    }


    @end

В инструкции:

switch (intTabBarSelectedIndex) 

intTabBarSelectedIndex будет определен как глобальная переменная и имеет целочисленный тип.

Теперь перейдем к классу TabBarController.

Вот его .h файл

#import <UIKit/UIKit.h>

@class  ImageTabBar;

@interface TabBarViewController : UIViewController <UITabBarControllerDelegate>
{
    ImageTabBar *objOfImageTabBar;

    IBOutlet UITabBarController *uiTabBarC;
}

@property (nonatomic, retain) IBOutlet UITabBarController   *uiTabBarC;

- (void)setNeedsDisplay;

@end

А вот его .m файл

Включите следующие функции в ваш файл TabBarController '.m:

- (void)viewDidLoad 
{
    [self.navigationController setNavigationBarHidden:YES];

    self.view               = uiTabBarC.view;
    uiTabBarC.selectedIndex = intTabBarSelectedIndex;
    uiTabBarC.delegate      = self;
    [super viewDidLoad];
}

#pragma mark TaBarViewController delegate

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
    intTabBarSelectedIndex = uiTabBarC.selectedIndex;

    UITabBar *aTabBar = tabBarController.tabBar;
    [aTabBar setNeedsDisplay];
}

- (void)setNeedsDisplay
{

}

Точно так же, ваш код будет работать отлично.

...