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 に答える