我使用StoryBoard向UITableView
添加了ViewController
。我还使用StoryBoard定义了一个自定义UITableViewCell
,并将项目(标签和图像视图)从单元格连接到类(使用插座)。我定义的一个属性是tableView和单元格具有透明背景'(使用Clear Color)'。当我的表格显示时,一切都按照设计进行,我看到了tableView是子视图的视图的背景颜色。
在我的应用中,有一个图标可以激活搜索。当我点击图标时,我使用代码打开searchBar:
tableView.tableHeaderView = searchController.searchBar
使用以下代码定义searchController
(我使用UISearchDisplayController
与iOS 7兼容)。该函数从viewDidLoad()
调用。
var searchController : UISearchDisplayController!
func configureSearchController() {
let searchBar = UISearchBar()
searchBar.delegate = self
searchBar.sizeToFit()
searchController = UISearchDisplayController(searchBar: searchBar, contentsController: self)
searchController.searchResultsDataSource = self
searchController.searchResultsDelegate = self
searchController.searchResultsTableView.registerClass(CategoryTableViewCell.self, forCellReuseIdentifier: "CategoryTableCell")
}
在cellForRowAtIndexPath函数中,我使用:
使单元格出列let cell = tableView.dequeueReusableCellWithIdentifier("CategoryTableCell", forIndexPath: indexPath) as! CategoryTableViewCell
并设置项目的值
cell.rowLabel.text = ....
cell.rowImage.image = ....
现在我的问题:
当我在搜索栏中输入值时,我会收到异常,因为我的cell.rowLabel
为nil
。我注意到返回的单元格类型为UITableViewCell
而不是我的自定义CategoryTableViewCell
。看看其他帖子,我发现如果我将单元格出列改为使用:
self.tableView.dequeueReusableCellWithIdentifier("CategoryTableCell", forIndexPath: indexPath) as! CategoryTableViewCell
返回正确的单元格。
为什么呢?这是什么self.tableView
?
现在我的真正问题。 self.tableView
没有tableView
的属性。例如,过滤的行显示为白色背景,因此我看不到视图的背景颜色。此外,第一行显示在searchBar
下,好像self.tableView
不知道tableView
中现在有标题。将searchBar
添加到self.tableView
没有任何区别
self.tableView.tableHeaderView = searchController.searchBar
如何解决这些问题?
请注意,之前我使用过UISearchController
(与iOS 7不兼容),但我没有遇到所有这些问题 - 根本不需要使用self.tableView
。
修改
截图:
在输入任何搜索文本之前
进入" J"在searchBar中
请注意第一行"评判"在searchBar下面,只显示单词底部。此外,人们可以看到背景颜色消失了。