Core data 搜索栏返回按钮

Core data 搜索栏返回按钮,core-data,swift2,xcode7,uisearchbar,Core Data,Swift2,Xcode7,Uisearchbar,我在tableview中有一个搜索栏,在.csv文件(coredata)中搜索结果列表非常庞大,因此用户必须在第一次搜索后向上滚动多次才能到达搜索栏,或者在Indexbar中选择“A”字母有没有办法在导航栏中添加一个按钮,以便在用户希望返回列表开头时显示搜索栏?提前谢谢 searchController = UISearchController(searchResultsController: nil) tableView.tableHeaderView = searchCont

我在tableview中有一个搜索栏,在.csv文件(coredata)中搜索结果
列表非常庞大,因此用户必须在第一次搜索后向上滚动多次才能到达搜索栏,或者在Indexbar中选择“A”字母
有没有办法在导航栏中添加一个按钮,以便在用户希望返回列表开头时显示搜索栏?提前谢谢

    searchController = UISearchController(searchResultsController: nil)
    tableView.tableHeaderView = searchController.searchBar
    searchController.searchResultsUpdater = self
    searchController.dimsBackgroundDuringPresentation = false


   override func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
        return sectionTitles[section]
    }

    override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        //assume a single section after a search
        return (searchController.active) ? 1 : sectionTitles.count
    }

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

        if searchController.active {
            return searchResults.count
        } else {
            // Return the number of rows in the section.
            let wordKey = sectionTitles[section]
            if let items = cockpitDict[wordKey] {
                return items.count
            }

            return 0
        }
    }

是的,在您执行操作的地方。

只需将代码从
tableView.tableHeaderView=searchController.searchBar
替换为
navigationItem.titleView=searchController.searchBar
,它在导航栏上显示搜索栏


但是当您选择搜索栏时,它会向上移动,并且可能在屏幕上不可见,因此您可以使用
UISearchBar
而不是
UISearchController
。有关更多信息,请查看这些信息。

这并不是对您问题的确切回答,但仍然是快速返回表格视图顶部问题的解决方案。您可以覆盖表视图以返回
YES
。通过这样做,用户只需点击状态栏即可跳到表的顶部。这是许多股票应用程序的标准行为,如联系人、邮件、Safari和照片

请注意,为了实现此行为,屏幕上只有一个滚动视图/表格视图/集合视图可能返回
YES
。在多个滚动视图的情况下,您也可以实现
UIScrollViewDelegate
-协议的

- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView
回调并动态检查给定的滚动视图是否应响应点击

虽然这是客观的C方式,但我想你应该能够将这个概念转移到Swift

这种方法有两个优点:

  • 你不会把导航栏弄得乱七八糟。苹果明确建议

    即使导航栏看起来有足够的空间,也不要让其他控件挤满导航栏。一般来说,导航栏只应包含视图的当前标题、后退按钮和一个管理视图内容的控件

  • 您将遵守操作系统的标准行为


  • 我不知道如何将用户直接发送到搜索栏,但总有其他方法可以做到,您可以做的是:重新加载故事板,然后它将再次显示初始状态下的搜索栏。看看这篇有趣的帖子:也许你可以去另一个VC网站,并立即返回一个简单的动画,这样用户就不会注意到这个骗子了。:)

    @Michael Dautermann我用一些代码编辑了我的问题。这与你提供的代码链接不同,对我有帮助吗?谢谢,搜索栏消失了,我正试图找回它,但无法恢复。更改为UISearchBar…是什么意思。。。。你能给我接电话吗?谢谢:)你查过我共享的链接了吗?@RamkrishnaSharma是的,我查过了,但不是Swift。你知道我如何用你上面的代码取回搜索栏吗?@Manolo:是swift,请再查一遍。关于找回搜索栏,您是否正在实施UISearchBar或UISearchController,请告诉我,以便我能在这方面帮助您。@Manolo您能转到这个聊天吗?我没有想到这是个好主意。。。。我会看一看,谢谢你Eddie…..效果很好,我可以设定一个形象,让它与众不同。谢谢