使用Google SDK的UITableView Static First Cell

时间:2016-04-25 23:13:33

标签: ios swift uitableview google-maps

我试图找出如何在UITableView中使用静态第一个单元格,然后为其余单元格生成动态结果。

更具体地说,我使用的是Google SDK,当用户在UISearchBar中键入地址或位置时,会在下面的UITableView中生成自动完成功能。我希望搜索栏下的第一个单元格保持静止,并说“当前位置”#34;然后是自动完成结果。

我尝试使用类似于概述here的方法。我无法弄清楚如何使其工作,因为这会使从Google自动填充返回的索引超出范围。

以下是我一直在努力尝试的一般方法:

 override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return 1
}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return self.searchResultsGoogle.count + 1
}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    //let cell = tableView.dequeueReusableCellWithIdentifier("cellIdentifier", forIndexPath: indexPath)

    if indexPath.row == 0 {

        let cell = self.tableView.dequeueReusableCellWithIdentifier("cellIdentifier", forIndexPath: indexPath)
        cell.textLabel?.text = "Current Location"
        cell.textLabel?.textColor = UIColor(red: 14/255, green: 122/255, blue: 254/255, alpha: 1)
        return cell

    }
    else {

        let cell1 = self.tableView.dequeueReusableCellWithIdentifier("cellIdentifier", forIndexPath: indexPath)
        cell1.textLabel?.text = self.searchResultsGoogle[indexPath.row]
        return cell1
    }

}

有关如何解决此问题的任何想法?谢谢!

1 个答案:

答案 0 :(得分:0)

改变这个:

cell1.textLabel?.text = self.searchResultsGoogle[indexPath.row]

为:

cell1.textLabel?.text = self.searchResultsGoogle[indexPath.row - 1]

这将调整行索引以考虑固定行。

更好的解决方案可能是使用单独的部分。将第0部分中的固定行和第1部分中的实际数据放在一起。

BTW - 由于细胞重用,您还有另一个问题。您需要重置其他行的文本颜色。否则,当您滚动表格视图时,某些行将显示错误的颜色。