0

当我在 iPhone 4.3 模拟器中使用此代码时,出现此错误,但在 iPhone 5 模拟器上运行时,它可以正常工作。

代码

    UITabBarController *tabB = [[UITabBarController alloc] init];
tabB.tabBar.tintColor=[UIColor colorWithRed:124.0/255.0 green:150.0/255.0 blue:32.0/255.0 alpha:1.0];

tabB.tabBar.selectedImageTintColor=[UIColor colorWithRed:187.0/255.0 green:255.0/255.0 blue:38.0/255.0 alpha:1.0];            
tabB.viewControllers = [NSArray arrayWithObjects:hc,bt, nil];
[self.navigationController pushViewController:tabB animated:YES];

错误

-[UITabBar setTintColor:]: unrecognized selector sent to instance 0x78787c0
2012-04-24 10:59:46.776 welcomeKidsWebsite[10357:12203] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UITabBar setTintColor:]: unrecognized selector sent to instance 0x78787c0'
*** Call stack at first throw:
(
    0   CoreFoundation                      0x01bcd5a9 __exceptionPreprocess + 185
    1   libobjc.A.dylib                     0x01d21313 objc_exception_throw + 44
    2   CoreFoundation                      0x01bcf0bb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
    3   CoreFoundation                      0x01b3e966 ___forwarding___ + 966
    4   CoreFoundation                      0x01b3e522 _CF_forwarding_prep_0 + 50
    5   welcomeKidsWebsite                  0x0005ac8e -[KidsWelcomeViewController GotoBooks:] + 622
    6   UIKit                               0x00e1f4fd -[UIApplication sendAction:to:from:forEvent:] + 119
    7   UIKit                               0x00eaf799 -[UIControl sendAction:to:forEvent:] + 67
    8   UIKit                               0x00eb1c2b -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 527
    9   UIKit                               0x00eb07d8 -[UIControl touchesEnded:withEvent:] + 458
    10  UIKit                               0x00e43ded -[UIWindow _sendTouchesForEvent:] + 567
    11  UIKit                               0x00e24c37 -[UIApplication sendEvent:] + 447
    12  UIKit                               0x00e29f2e _UIApplicationHandleEvent + 7576
    13  GraphicsServices                    0x02528992 PurpleEventCallback + 1550
    14  CoreFoundation                      0x01bae944 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52
    15  CoreFoundation                      0x01b0ecf7 __CFRunLoopDoSource1 + 215
    16  CoreFoundation                      0x01b0bf83 __CFRunLoopRun + 979
    17  CoreFoundation                      0x01b0b840 CFRunLoopRunSpecific + 208
    18  CoreFoundation                      0x01b0b761 CFRunLoopRunInMode + 97
    19  GraphicsServices                    0x025271c4 GSEventRunModal + 217
    20  GraphicsServices                    0x02527289 GSEventRun + 115
    21  UIKit                               0x00e2dc93 UIApplicationMain + 1160
    22  welcomeKidsWebsite                  0x000024ac main + 188
    23  welcomeKidsWebsite                  0x000023e5 start + 53
4

3 回答 3

2

使此版本独立的一个好方法是:

 if ([tabBarController.tabBar respondsToSelector:@selector(setTintColor:)]) {
        [tabBarController.tabBar setTintColor:color];
 }

在 IOS 5 中,这将设置 tabbar tintcolor,在较低版本中它不会崩溃

于 2012-04-24T11:24:37.617 回答
0

根据文档 tintColor仅适用于 iOS 5.0 及更高版本。线索是 4.3 模拟器在说unrecognized selector sent to instance这基本上意味着该方法不存在。

您需要执行以下操作之一:

  • 将所需的最低 iOS 设置为 5.0。
  • 仅在 iOS 5.0 或更高版本上运行时应用色调。
  • 使用两个版本都支持的替代方法。

文档摘录:

色调颜色

应用于标签栏背景的色调颜色。@property(nonatomic, retain) UIColor *tintColor 可用性

Available in iOS 5.0 and later.
于 2012-04-24T09:16:59.413 回答
-2

试试这个

tabB.tintColor=[UIColor colorWithRed:124.0/255.0 green:150.0/255.0 blue:32.0/255.0 alpha:1.0];
于 2012-04-24T09:13:16.220 回答