以前在iOS 12中允许使用相同的代码,但是现在当我尝试在iOS 13上运行相同的代码时,它崩溃并给我同样的错误:
由于未捕获的异常“ NSGenericException”而终止应用程序, 原因:“访问UISearchBar的set_cancelButtonText:ivar是 禁止。这是一个应用程序错误'
与以下代码行相关:
searchController.searchBar.setValue("Cancel".localized, forKey:"_cancelButtonText")
现在,我知道现在禁止访问setValue,但是如何解决此崩溃并更改“取消”按钮的标题,因为搜索栏中不包含任何属性。
答案 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 避免使用