Swift:使用UITableViews进行单选

时间:2015-04-11 10:36:40

标签: uitableview swift

我有一个常规的UITableView,启用了单一选择。我的问题是,如果用户选择多行,则原始行保持选中状态。我也有一个问题,即如果我设置了cell.selectionStyle = UITableViewCellSelectionStyle.Blue

,高光仍然是灰色的

我的视图控制器在故事板中定义。

表格视图

  • 内容:动态原型
  • 选择:单一选择
  • 触摸显示选择[X]
  • 背景:黑色
  • 索引行限制:0

表格单元格视图

  • 风格:自定义
  • 选择:蓝色
  • 背景:黑色

以下是一些截图:

selection 1 selection 2

这是我的代码:

class AreaViewController: UITableViewController
{

    override func viewDidLoad()
    {
        super.viewDidLoad()
        self.tableView.backgroundColor = backgroundColour
    }


    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
    {
        let cell = tableView.dequeueReusableCellWithIdentifier("areacell", forIndexPath: indexPath) as! UITableViewCell
        cell.selectionStyle = UITableViewCellSelectionStyle.Blue

        cell.textLabel?.text = "Cell Contents"
        cell.textLabel?.textColor = UIColor.whiteColor()

        return cell
    }

     override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) 
    {
         let cell = tableView.dequeueReusableCellWithIdentifier("areacell", forIndexPath: indexPath) as! UITableViewCell

    }
}

我一定错过了一些明显的东西,但我没有看到任何非标准的东西。

2 个答案:

答案 0 :(得分:1)

来自UITableViewCell Class Reference

  

UITableViewCellSelectionStyleBlue单元格具有默认背景   选择时的颜色。

     

在iOS 7中,选择颜色不再是蓝色。使用   相反,UITableViewCellSelectionStyleDefault。

如果您想要选定单元格的特殊背景颜色,则必须设置单元格backgroundView

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("myCell", forIndexPath: indexPath) as! UITableViewCell

    // Configure the cell...
    let backgroundView = UIView()
    backgroundView.backgroundColor = UIColor.redColor()
    cell.selectedBackgroundView = backgroundView

    return cell
}

看起来像这样:

enter image description here

答案 1 :(得分:0)

哎呀!我终于找到了它。好像我正在调用let cell = tableView.dequeueReusableCellWithIdentifier(" areacell",forIndexPath:indexPath)as! didSelectRowAtIndexPath方法中的UITableViewCell。删除它导致一切都重新开始工作。真的很明显。感谢您帮助zisoft让我走上正确的道路。