0

我正在制作一个应用程序,我希望能够更改 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.


}

然而,什么也没有发生。

4

1 回答 1

1

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

UIViewController 上有一个现有的属性:

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

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

因此请参考 tabBarController:

self.tabBarController   

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

于 2013-01-10T20:40:21.883 回答