Swift:使用 UITableViews 进行单选
Posted
技术标签:
【中文标题】Swift:使用 UITableViews 进行单选【英文标题】:Swift : Single Selection with UITableViews 【发布时间】:2015-04-11 10:36:40 【问题描述】:我有一个启用单选的常规 UITableView。我的问题是,如果用户选择多行,那么原始行仍然被选中。我也有一个问题,无论我设置 cell.selectionStyle = UITableViewCellSelectionStyle.Blue
我的视图控制器在 Storyboard 中定义。
表格视图
内容:动态原型 选择:单选 在触摸 [X] 时显示选择 背景:黑色 索引行限制:0表格单元格视图
风格:自定义 选择:蓝色 背景:黑色以下是一些截图:
这是我的代码:
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
我一定遗漏了一些明显的东西,但我没有看到任何不标准的东西。
【问题讨论】:
【参考方案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
看起来像这样:
【讨论】:
谢谢紫软。我之前曾尝试过这段代码,但它只能工作。突出显示为红色,但只有当您移开手指时“触摸”该行时,它才会作为我的原始帖子变灰。 我无法重复此操作,它可以正常工作。您是否在代码中的某处调用deselectRowAtIndexPath()
?
或者您是否不小心使用了deselectRowAtIndexPath
而不是didSelectRowAtIndexPath
?由于代码完成,不久前我也发生了同样的事情。很难看出区别:-)
不,我已经检查了我的代码,并且我从未在整个项目中调用 deselectRowAtIndexPath。现在有人已经检查了我的理智,我将尝试从头开始重新创建视图。我会让你知道我是怎么过的。谢谢。【参考方案2】:
啊!我终于找到了。好像我在调用 let cell = tableView.dequeueReusableCellWithIdentifier("areacell", forIndexPath: indexPath) 为! didSelectRowAtIndexPath 方法中的 UITableViewCell。删除它会导致一切重新开始工作。确实很明显。感谢您帮助 zisoft 让我走上正确的道路。
【讨论】:
以上是关于Swift:使用 UITableViews 进行单选的主要内容,如果未能解决你的问题,请参考以下文章
将数据保存在来自 ios swift 中 2 个不同 uitableviews 的数组中
如何使用 UIKit 在 Swift 5 中创建具有内在高度的 UITableView?