是否可以在初始化后更改UITabBarController的色调颜色

时间:2013-01-10 20:31:16

标签: objective-c cocoa-touch override ibaction

我正在创建一个应用程序,我希望能够更改UITabBarController的色调颜色。我为UITabBarController创建了一个自定义类,并将其分配给IB中的UITabBar。它工作正常。这个类有一个IBAction,它改变了它的颜色,叫做alterColor:

当应用程序首次启动时,这一切都很好。但在那之后,我似乎无法从另一个班级开始行动。我有一个设置类,我尝试更改颜色。我通过在设置类中执行以下操作来获得正确的实例。

·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.


}

然而,没有任何反应。

1 个答案:

答案 0 :(得分:1)

假设此viewController包含在tabbarController中,则不需要该属性。

UIViewController上有一个现有属性:

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

(你不需要在代码中添加它,它是你在创建viewController sublcass时继承的类)

请参阅tabBarController:

self.tabBarController   

可能需要将其强制转换为自定义控制器,以鼓励编译器允许您将颜色变换方法发送给它。但无论哪种方式,您都会将消息传递给正确的对象。