UISearchBar 自定义代码在 iOS7 中崩溃,适用于 iOS6

Posted

技术标签:

【中文标题】UISearchBar 自定义代码在 iOS7 中崩溃,适用于 iOS6【英文标题】:UISearchBar customization code crashes in iOS7, works on iOS6 【发布时间】:2013-09-23 19:35:10 【问题描述】:

我有一个支持 ios5.1 的 iOS 应用程序,我正在自定义搜索栏中的取消按钮。

我正在使用并且在 iOS6.1 之前有效的代码如下:

id barButtonAppearanceInSearchBar =
    [UIBarButtonItem appearanceWhenContainedIn: [UISearchBar class], nil];
[barButtonAppearanceInSearchBar setTitle:
    [self localizedStringValueFor:@"Cancel"]];

不知何故,第二行会导致错误的访问异常,当我尝试设置按钮文本的值时,barButtonAppearanceInSearchBar 似乎被释放了。

localizedStringForValue 是一个自定义方法,如果不存在翻译,它将返回带有所提供键或键本身的翻译的字符串。

现在,当我在 iOS7 的模拟器上运行应用程序时,应用程序总是崩溃。一直试图弄清楚我做错了什么,但到目前为止还没有运气。

【问题讨论】:

也许可以,但到目前为止它一直运行良好,我相信这是一个经常提到的自定义取消按钮文本问题的解决方案。 【参考方案1】:

setTitle 不支持UIAppearanceContainer 方法。仅支持标有 UI_APPEARANCE_SELECTOR 的属性。

您必须在创建 UISearchBar 时手动设置标题。

【讨论】:

很抱歉,我找不到在创建时设置取消按钮文本的方法,我在 UISearchBar 的文档中遗漏了什么?

以上是关于UISearchBar 自定义代码在 iOS7 中崩溃,适用于 iOS6的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 7 中自定义 UISearchBar

如何在 iOS7 中更改 UISearchBar 的背景颜色

如何在 iOS7 中更改 UISearchBar 的 inputView?

在 iOS7 中使用 UISearchBar 将子视图添加到 tableHeaderView 行为不端

iOS7 上的 UISearchBar 着色不一致

如何在iOS7中更改UISearchBar的取消按钮的textColor?