美文网首页Swift架构师之路
Swift更改SearchBar的“No Results”标签

Swift更改SearchBar的“No Results”标签

作者: LukeYU | 来源:发表于2015-06-16 17:29 被阅读0次

    今天要实现一个基于 TableView 的搜索,基于经验沿用了 iOS7 时代的 UISearchDisplayController,XCODE 一直提示我改用 UISearchController 。先不管这个,说说碰到的修改 Cancel 按钮和修改 No Results 文字的问题。

    修改 Cancel 按钮比较简单,直接通过 Controller 找到该 UINavigationButton 即可,最好的修改位置当然是在 searchDisplayControllerWillBeginSearch 方法。

    func searchDisplayControllerWillBeginSearch(controller: UISearchDisplayController) {
        self.searchDisplayController?.searchBar.showsCancelButton = true
        
        var cancelButton: UIButton?
        var topView: UIView = controller.searchBar.subviews[0] as! UIView
        for view in topView.subviews  {            
            if view.isKindOfClass(NSClassFromString("UINavigationButton")){
                cancelButton =  view as? UIButton
            }
        }
        if (cancelButton != nil) {
            cancelButton?.setTitle("取消", forState: UIControlState.Normal)
            cancelButton?.setTitleColor(UIColor.appBlueColor(), forState: UIControlState.Normal)            
        }
        
    }
    

    修改 “No Results”就比较讨厌,虽然思路类似,但是找了一圈都没有直接找到该 UILabel,UISearchResultsUpdating 协议带的方法
    updateSearchResultsForSearchController 也不可以。最后还是在 StackOverFlow 找到了解决方案。
    原帖:http://stackoverflow.com/questions/8447086/uisearchdisplaycontroller-no-results-text

     func searchDisplayController(controller: UISearchDisplayController, shouldReloadTableForSearchString searchString: String!) -> Bool {
      
        dispatch_after(
            dispatch_time(
                DISPATCH_TIME_NOW,
                Int64(0.01)
            ),
            dispatch_get_main_queue(), {
                
                for view in self.searchDisplayController?.searchResultsTableView.subviews as! [UIView]{
                    if view.isKindOfClass(NSClassFromString("UILabel")){
                        let label = view as! UILabel
                        label.text = "没有匹配"
                    }
                    
                }
        })
        
        return true
    }
    

    还是准备使用 SearchController 了,看到那么多 WARNING 就忍不了。

    相关文章

      网友评论

        本文标题: Swift更改SearchBar的“No Results”标签

        本文链接:https://www.haomeiwen.com/subject/xmksqttx.html