【问题标题】:integrate paging in autocomplete local searching在自动完成本地搜索中集成分页
【发布时间】:2017-01-18 11:56:21
【问题描述】:

我正在从存储在文档目录中的文件中读取 json 数据,结果数据数组的计数超过 1,30,000。

我已经实现了自动搜索方法,以根据现有数据过滤数据,以输入数据开头,即前缀谓词,这将在每个文本字段键事件上执行。

由于我无法为每个搜索执行完整的循环,所以我为每 12 个找到的结果打破循环并重新加载到 tableview。 我的要求是如何实现分页,以便在滚动时添加并重新加载下一个找到的数据。

func searchAutocompleteEntriesWithSubstring(_ substring:     String,textfield:UITextField)
{
    self.autoCompletesCompnies.removeAll(keepingCapacity: false)

    searchQueue = DispatchQueue.global(qos: .default)
    searchQueue!.async
        {

        for comp in self.companies!
        {
            var myString:NSString! = (comp.orgDescription! as NSString).lowercased as NSString!
            myString = myString.trimmingCharacters(in: .whitespaces) as NSString!
            let searchString = substring.trimmingCharacters(in: .whitespaces).lowercased()
            let substringRange :NSRange! = myString.range(of: searchString)

            if (substringRange.location  == 0)
            {
                if !self.autoCompletesCompnies.contains(comp)
                {
                self.autoCompletesCompnies.append(comp)
                }
                DispatchQueue.main.sync
                {
                    print("autocompanies count after search ========\(self.autoCompletesCompnies.count)")
                    self.autocompleteTableView.reloadData()
                    //self.autocompleteTableView.isHidden = false 
                    if self.autoCompletesCompnies.count>0
                    {
                        print("is thread suspended \(self.isSuspended)")
                        if !(self.isSuspended!){
                         do {
                          self.tableViewdesignFunc(textfield)
                         }
                        }
                        else
                        {
                            self.autocompleteTableView.isHidden = true
                            self.autoCompletesCompnies.removeAll(keepingCapacity: false)
                        }
                    }
                }
            }
            if self.autoCompletesCompnies.count > 12
            {
                break
            }
        }


    }



}

【问题讨论】:

  • 您需要在用户向下滚动时添加一些新值来更新数据。我说的对吗?
  • @the_dahiya_boy - 是的

标签: ios objective-c swift uitableview swift3


【解决方案1】:

使用此代码

override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
        let lastElement = dataSource.count - 1
        if indexPath.row == lastElement {
            // handle your logic here to get more items, add it to dataSource and reload tableview
            }    
    }

编辑

添加堆栈溢出答案。

在这里我得到了某人的 Stack 答案,请继续阅读以了解更多具体细节load-more-options-with-uitableview

【讨论】:

    猜你喜欢
    • 2012-03-20
    • 2018-06-10
    • 1970-01-01
    • 2015-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-05
    相关资源
    最近更新 更多