我正在创建一个应用程序,我希望能够更改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.
}
然而,没有任何反应。
答案 0 :(得分:1)
假设此viewController包含在tabbarController中,则不需要该属性。
UIViewController上有一个现有属性:
@property(nonatomic, readonly, retain) UITabBarController *tabBarController
(你不需要在代码中添加它,它是你在创建viewController sublcass时继承的类)
请参阅tabBarController:
self.tabBarController
您可能需要将其强制转换为自定义控制器,以鼓励编译器允许您将颜色变换方法发送给它。但无论哪种方式,您都会将消息传递给正确的对象。