i具有一个静态表视图,该视图由几个部分组成,每个部分都有几行。单元格中的数据相对简单:静态图像(从捆绑包中加载)和带有静态字符串的标签。
我需要实现此表视图的搜索。
无需将静态表视图转换为动态表视图,我将如何实现搜索?
我知道如何在动态表视图上实现搜索,并且我尝试了一些事情来生成数组,这些数组是检查数据模型,然后生成搜索结果数组。我尝试在已知的部分和单元格上循环循环,但这不起作用,因为并非所有单元都同时存在于内存中。我尝试使用Scrolltorow并在滚动时捕获它们,但这也不起作用。
(我将有一个IF/else块,显示搜索结果,如果该数组中有任何内容。)
我希望只有一个可用的数组,我可以通过它生成搜索结果。我想避免将表视图转换为某种静态识别的动态黑客系统(命名诸如image_ [row] _ [col]之类的图像,因为这将是添加静态单元格或重新排序的噩梦)。我如何生成一个数组,该数组将是静态表视图中的单元格?
编辑:
我有一个似乎是解决方案的东西,但我觉得自己是一个肮脏的程序员。这几乎就像我正在为Singleton工厂写一个Goto。
self.tableView.isHidden = true
let numSections = self.tableView.numberOfSections
for _ in 0..<numSections {
let newSectionArray = Array<KeyMenuTableViewCell>()
cells.append(newSectionArray)
}
for aSectionIndex in 0..<numSections {
let numRows = self.tableView.numberOfRows(inSection: aSectionIndex)
for aRowIndex in 0..<numRows {
let index = IndexPath(row: aRowIndex, section: aSectionIndex)
self.tableView.scrollToRow(at: index, at: .bottom, animated: false)
let cell = self.tableView.cellForRow(at: index) as! KeyMenuTableViewCell
self.cells[aSectionIndex].insert(cell, at: aRowIndex)
}
}
self.tableView.scrollToRow(at: IndexPath(row: 0, section: 0), at: .top, animated: false)
self.tableView.isHidden = false
老实说,您的代码片段是一个黑客,您应该在脑海中聆听那个告诉您的小声音。我想能够使用IB编辑表并查看其外观很方便,但是当您需要访问表中的数据时使用静态表是错误的方法抱怨:故事板中存在静态表的细胞数据,并且单元格通常同时并不全部。
为了搜索表,您需要访问数据,而访问数据的最佳方法首先是自己控制数据模型。改变动态桌子没有理由应该"皇家痛苦"。创建一个属性列表或其他合适的文件以包含数据。如果您的表包含图像,请在属性列表中使用图像名称。编辑表仅应只需要更新数据文件。
使用静态表视图时,我的表视图控制器中没有数据模型。
好吧,这就是问题所在。搜索需要搜索数据。即使您将表作为静态表作为静态表,也需要拥有一个数据模型,以便进行一些搜索。
在任何情况下,您都不应尝试搜索表视图,就好像是数据一样。表视图为 view ;数据是模型。您要搜索的需要模型。