0

アプリを作成していますが、UITabBarControllerの色合いを変更できるようにしたいと考えています。UITabBarControllerのカスタムクラスを作成し、それをIBのUITabBarに割り当てました。正常に動作します。このクラスには、alterColorと呼ばれる色を変更するIBActionがあります。

アプリが最初に起動したときは、これで問題ありません。しかし、その後、私は別のクラスからそのアクションを実行することができないようです。色を変更しようとする設定クラスがあります。設定クラスで次のように実行すると、正しいインスタンスが取得されます。

.H

@property (nonatomic, strong) TabBarController *tabController;

.M

@implementation LogbookThirdViewController
@synthesize CarbsTextField;
@synthesize tabController;

..。

-(IBAction)colorRedPicked:(id)sender {
    NSString *writableDBPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"colorChoice.txt"];

    NSString *carbRatio = @"red";

    [carbRatio writeToFile:writableDBPath atomically:YES encoding:NSUTF16StringEncoding error:nil];

    NSString *readFile;
    readFile = [NSString stringWithContentsOfFile:writableDBPath encoding:NSUTF16StringEncoding error:nil];
    NSLog(@"Color = %@", readFile);
    readFile = nil;

    [tabController alterColor:tabController];  //This line should run the method.


}

ただし、何も起こりません。

4

1 に答える 1

1

このviewControllerがtabbarController内に含まれていると仮定すると、そのプロパティは必要ありません。

UIViewController には既存のプロパティがあります。

 @property(nonatomic, readonly, retain) UITabBarController *tabBarController

(コードに追加する必要はありません。viewController サブクラスを作成するときに継承するクラスにあります)

したがって、tabBarController を参照してください。

self.tabBarController   

カスタムコントローラーに型キャストして、コンパイラーが色変更メソッドをそれに送信できるようにする必要がある場合があります。ただし、どちらの方法でも、正しいオブジェクトにメッセージを送信できます。

于 2013-01-10T20:40:21.883 に答える