在UIBarButtonItem setTintColor上发送无法识别的选择器

时间:2011-12-17 14:52:03

标签: iphone ios uibarbuttonitem unrecognized-selector

我在应用程序商店中有一个应用程序,我正在使用Flurry分析。而且我不时会得到一个未处理的异常错误,我无法弄明白。

NSInvalidArgumentException: - [UIBarButtonItem setTintColor:]:无法识别的选择器发送到实例0x177b20 消息:应用程序崩溃

我无法弄清楚的是,我没有在任何地方设置任何条形按钮项目的色彩。我有一些自定义视图,我设置了正确的条形按钮项目,但没有色调。

我对按钮的大多数使用都是这样的。

- (void)viewDidLoad
{
    [super viewDidLoad];

    UINavigationBar *bar = [self.navigationController navigationBar];
    [bar setTintColor:[UIColor colorWithRed:0 green:69.0/255 blue:118.0/255 alpha:1]];
    self.navigationItem.title = @"Edit User";

    UIBarButtonItem *saveButton = [[UIBarButtonItem alloc] 
                                   initWithTitle:@"Save"
                                   style:UIBarButtonItemStylePlain 
                                   target:self
                                   action:@selector(editUser:)];
    self.navigationItem.rightBarButtonItem = saveButton;
    [saveButton release];

    UIBarButtonItem *cancelButton = [[UIBarButtonItem alloc] 
                                     initWithBarButtonSystemItem:UIBarButtonSystemItemCancel
                                     target:self
                                     action:@selector(cancel)];

    [[self navigationItem] setLeftBarButtonItem:cancelButton];
    [cancelButton release];

}

如果有人对此问题有任何见解,我将非常感激。我的目标是iOS 4.0以及我的项目。

更新 我弄清楚是什么导致了setTintColor上的一些随机问题。我发现我在其中一个实际的条形按钮项上设置了色调。我猜测OS版本之间存在一些可能导致崩溃的差异。因此,如果有人能告诉我在导航栏中设置自定义右键栏项目的操作系统中立方式,我们将不胜感激。

3 个答案:

答案 0 :(得分:7)

问题在于2个类的错误-setTintColor用法。 4.x设备不支持-setTintColor,因此当旧设备碰到色调时会崩溃。

答案 1 :(得分:3)

你试过了吗?

self.navigationController.navigationBar.tintColor =[UIColor colorWithRed:0 green:69.0/255 blue:118.0/255 alpha:1];

答案 2 :(得分:1)

如果你的目标是iOS 4.0,你可以这样做: 最后在你的AppDelegate.m中@end放了这段代码:

@implementation UINavigationBar (UINavigationBarCategory)
- (void)drawRect:(CGRect)rect {
    UIColor *color = [UIColor YOUR_COLOR];
    self.tintColor = color;
        //if you want image for background use this code
    UIImage *img  = [UIImage imageNamed: @"IMAGE_NAME.png"];
    [img drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}

@end

希望这有帮助。对我来说这是工作。