我正在尝试自定义AppDelegate文件中的导航栏及其按钮:
// first I am customizing the done button
[[UIBarButtonItem appearance] setBackgroundImage:buttonDone forState:UIControlStateNormal style:UIBarButtonItemStyleDone barMetrics:UIBarMetricsDefault];
[[UIBarButtonItem appearance] setBackgroundImage:buttonDonePressed forState:UIControlStateHighlighted style:UIBarButtonItemStyleDone barMetrics:UIBarMetricsDefault];
//and then I am customizing the back button
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:buttonBack forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:buttonBackPressed forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault];
我为完成按钮获得了[_UIBarItemAppearance setBackgroundImage:]: unrecognized selector sent to instance
。奇怪的是,后退按钮的自定义功能正常,而完成按钮的自定义功能会使应用程序崩溃。有什么想法吗?
* PS buttonDone,buttonDonePressed,buttonBack和buttonBackPressed是我创建的四个UIImage-s *
更新:在iOS 5.0模拟器上,应用程序崩溃,但在6.0上它可以正常运行。有关如何避免5.0崩溃的任何建议?
答案 0 :(得分:1)
从文档中,此签名仅适用于iOS 6.0 +
您可以通过以下方式测试对象方法的可用性:
[obj respondsToSelector:@selector(<methodName>)]
所以试试:
id item = [UIBarButtonItem appearance];
if ([item respondsToSelector:@selector(setBackgroundImage:forState:style:barMetrics:)]) {
// Use new signature
} else {
// Use old signature
}