Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Search 搜索栏ios 8中的取消按钮_Search_Ios8 - Fatal编程技术网

Search 搜索栏ios 8中的取消按钮

Search 搜索栏ios 8中的取消按钮,search,ios8,Search,Ios8,告诉我如何更改搜索栏中“取消”按钮上的文本 图:您可以在UISearchBar的此委托方法中执行此操作 - (void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller { [theSearchBar setShowsCancelButton:YES animated:NO]; for (UIView *subView in theSearchBar.subviews){

告诉我如何更改搜索栏中“取消”按钮上的文本


图:

您可以在UISearchBar的此委托方法中执行此操作

- (void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller
{
    [theSearchBar setShowsCancelButton:YES animated:NO];
    for (UIView *subView in theSearchBar.subviews){
        if([subView isKindOfClass:[UIButton class]]){
            [(UIButton*)subViewsetTitle:@"Button Title"forState:UIControlStateNormal];
        }
    }
}
更新

经过长时间的寻找,这是我在斯威夫特工作的唯一途径

是设置自定义UIBarButtonItem,但需要在导航栏上显示搜索栏

在ViewDidLoad()中

self.searchDisplayController?.displaysSearchBarInNavigationBar=true

和在委托方法中

func searchBarTextDidBeginEditing(searchBar: UISearchBar) {

        var barButton = UIBarButtonItem(title: "Button Title", style: UIBarButtonItemStyle.Done, target: self, action: "here")
        self.searchDisplayController?.navigationItem.rightBarButtonItem = barButton
    }
我希望这对你有用

«另一次更新

正如您在评论中所说,您需要本地化应用程序,在您的情况下,您只需要本地化故事板

首先导航到您的项目设置,然后是信息,在本地化下单击+按钮并添加您自己的语言,然后仅检查情节提要

现在你已经本地化了你的应用程序,但是在你删除应用程序并重新安装之前,你可能看不到更改,或者如果设备语言设置为英语,你需要编写两行代码来手动更改语言,是吗

var str:NSString = "ar" // ar stands for arabic you put here you own language small character 
        var myArray:NSArray = [str]
        NSUserDefaults.standardUserDefaults().setObject(myArray, forKey: "AppleLanguages")
你的按钮看起来像这样

如果您想了解更多有关本地化的信息,请参阅此

如果您在我之前仍然需要帮助:)

有两种解决方案

  • 设置键/值
  • [self.searchController.searchBar设置值:@”취소" forKey:@“取消按钮文本”]

    此解决方案运行良好,但您必须知道_cancelButtonText属性不是公共属性(在文档页面中找不到此属性) 而且还不确定该解决方案是否能通过苹果审查程序。因此,请使用解决方案2

  • 使用委托。 您可以在willPresentSearchController方法中更改取消按钮标题(iOS8)
  • (假设搜索栏位于tableView headerView中)

    此外,您还可以通过Xcode中的视图调试工具获取有关搜索栏的信息。
    祝你好运。

    实际上,取消按钮不是搜索栏中的俯视图。你应该递归搜索它

    -(UIButton*)findButtonInView:(UIView*)v{
        for (UIView *subView in v.subviews){
            if([subView isKindOfClass:[UIButton class]]){
                return (UIButton*)subView;
            }else if([subView isKindOfClass:[UIView class]]){
                UIButton* btn = [self findButtonInView:subView];
                if(btn){
                    return btn;
                }
            }
        }
        return nil;
    }
    
    //...
    
    UIButton* searchButton = [self findButtonInView:self.searchBar];
    

    有可能在Swift上完成吗?请参阅更新的答案。不幸的是,它没有帮助。谢谢。这里有另一种方法,但您需要在项目中使用objective-c类。您想这样做吗?您能告诉我为什么要使用另一个标题吗?如果您想为另一种语言使用另一个标题,您可以让系统在r通过本地化您的应用程序,取消将根据当前语言自动更改。这是由于另一种语言。我认为更改语言就足够了。向我们展示您迄今为止的尝试。如何将此方法转换为swift?
    -(UIButton*)findButtonInView:(UIView*)v{
        for (UIView *subView in v.subviews){
            if([subView isKindOfClass:[UIButton class]]){
                return (UIButton*)subView;
            }else if([subView isKindOfClass:[UIView class]]){
                UIButton* btn = [self findButtonInView:subView];
                if(btn){
                    return btn;
                }
            }
        }
        return nil;
    }
    
    //...
    
    UIButton* searchButton = [self findButtonInView:self.searchBar];