swift为什么self.tableView没有我的TableView

时间:2016-08-29 10:02:53

标签: ios swift uitableview uisearchcontroller

我使用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 = ....

现在我的问题:

  1. 当我在搜索栏中输入值时,我会收到异常,因为我的cell.rowLabelnil。我注意到返回的单元格类型为UITableViewCell而不是我的自定义CategoryTableViewCell。看看其他帖子,我发现如果我将单元格出列改为使用:

    self.tableView.dequeueReusableCellWithIdentifier("CategoryTableCell", forIndexPath: indexPath) as! CategoryTableViewCell
    
  2. 返回正确的单元格。

    为什么呢?这是什么self.tableView

    1. 现在我的真正问题。 self.tableView没有tableView的属性。例如,过滤的行显示为白色背景,因此我看不到视图的背景颜色。此外,第一行显示在searchBar下,好像self.tableView不知道tableView中现在有标题。将searchBar添加到self.tableView没有任何区别

      self.tableView.tableHeaderView = searchController.searchBar
      
    2. 如何解决这些问题?

      请注意,之前我使用过UISearchController(与iOS 7不兼容),但我没有遇到所有这些问题 - 根本不需要使用self.tableView

      修改

      截图:

      在输入任何搜索文本之前

      Before entering any search text

      进入" J"在searchBar中

      After entering "J" in the searchBar

      请注意第一行"评判"在searchBar下面,只显示单词底部。此外,人们可以看到背景颜色消失了。

0 个答案:

没有答案