UISearchBar的set_cancelButtonText:禁止使用ivar

时间:2019-09-21 12:58:08

标签: swift ios13

以前在iOS 12中允许使用相同的代码,但是现在当我尝试在iOS 13上运行相同的代码时,它崩溃并给我同样的错误:

  

由于未捕获的异常“ NSGenericException”而终止应用程序,   原因:“访问UISearchBar的set_cancelButtonText:ivar是   禁止。这是一个应用程序错误'

与以下代码行相关:

searchController.searchBar.setValue("Cancel".localized, forKey:"_cancelButtonText")

现在,我知道现在禁止访问setValue,但是如何解决此崩溃并更改“取消”按钮的标题,因为搜索栏中不包含任何属性。

4 个答案:

答案 0 :(得分:8)

您可以使用UIAppearance

UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).title = "Whatever"

答案 1 :(得分:0)

对于 Objective-C ,如果UISearchController遇到问题或在使用时更改它,则可以使用它。

[[UINavigationBar appearanceWhenContainedInInstancesOfClasses:@[[UISearchController class]]] prefersLargeTitles];

答案 2 :(得分:0)

Objective-C版本:

[[UIBarButtonItem appearanceWhenContainedInInstancesOfClasses:@[[UISearchBar class]]] setTitle:@"CancelText"];

答案 3 :(得分:-1)

自iOS 8.0起不推荐使用UISearchDisplayController 避免使用