带有 UITableViewController 的 SearchBar 包含错误数量的单元格

Posted

技术标签:

【中文标题】带有 UITableViewController 的 SearchBar 包含错误数量的单元格【英文标题】:SearchBar with UITableViewController contains wrong amount of cells 【发布时间】:2016-09-12 14:17:50 【问题描述】:

我正在像这样在我的UITableViewController 中设置UISearchController

    self.resultSearchController = UISearchController(searchResultsController: nil)
    self.resultSearchController.searchResultsUpdater = self
    self.resultSearchController.delegate = self
    self.resultSearchController.dimsBackgroundDuringPresentation = false
    self.resultSearchController.searchBar.sizeToFit()
    self.tableView.tableHeaderView = self.resultSearchController.searchBar

在我的willPresentSearchController 中,我正在计算单元格的数量并将它们放入一个数组中,以使过滤后的单元格与原始单元格相同。


    print("Will Present")
    cells.removeAll()
    print(numberOfSectionsInTableView(table))
    // Iterate over all the rows of a section
    for (var row = 0; row < tableView.numberOfRowsInSection(0); row++) 
        if let cell:chatUebersichtCell = table.cellForRowAtIndexPath(NSIndexPath(forRow: row, inSection: 0)) as? chatUebersichtCell

        cells.append(cell)

        
    



现在,计算细胞数量,我可以得到一个数字,等于我的 TVC 中可见的细胞数量,但不会更多(iPhone 5 上为 5)。

任何想法,如何改变这个?

编辑

NumberOfSections = 1 NumberOfRows 等于单元格数(在我的示例中为 10) 在第 5 行之后,我不能再投射到我的牢房了

【问题讨论】:

【参考方案1】:

您只获得 5 个单元格的原因是因为您使用相同的视图控制器来呈现您的结果(搜索后表格视图会发生变化)。为了实现您的目标,您可以执行以下两项操作之一:

    在搜索发生之前保留对行数的引用,并针对该数字运行循环。

    使用另一个表格视图控制器来显示您的搜索结果:self.resultSearchController = UISearchController(searchResultsController: newTableViewController)

【讨论】:

尝试了第一个想法:结果是,我无法投射单元格。 Second 也没有这样做。我数不过 5 个单元格。 你能贴出包含搜索控制器的类的代码吗? @JVS 请注意,当我进行单元格搜索时,我的 tableViewController 没有改变。 (我正在将我的代码放入 willPresent....)

以上是关于带有 UITableViewController 的 SearchBar 包含错误数量的单元格的主要内容,如果未能解决你的问题,请参考以下文章

使用带有小型表格的 UITableViewController?

带有 UITableViewController 的 SearchBar 包含错误数量的单元格

带有 UIViewController(或 UITableViewController)的 tableView 属性

如何创建带有按钮的视图并将它们添加到 UITableViewController [关闭]

在 UITableviewcontroller Swift 顶部带有标签的 UIView

带有异步调用的空 UITableViewController