0

我正在创建一个带有 5 个选项卡项的选项卡栏。我以编程方式创建了标签栏。我想将默认图像(更多)设置为标签栏项目。如果我通过 IB 创建标签栏,我会将标识符选择为“更多”,但如何以编程方式进行呢?

4

1 回答 1

0

为此,您需要创建一个其父类为 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
{

}

完全这样做,您的代码将完美运行。

于 2010-12-09T07:00:11.290 回答