我在应用商店中有一个正在使用Flurry Analytics的应用。而且我经常会遇到无法解决的异常错误。

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版本之间存在一些差异,可能会导致崩溃。因此,如果任何人都可以告诉我一种在OS中立的方法来在我的导航栏中设置自定义右键栏按钮,则将不胜感激。

最佳答案

问题出在2个类上的-setTintColor错误用法。 -setTintColor在4.x设备上不受支持,因此,当较旧的设备撞上色调颜色时,您将崩溃。

07-24 09:36