UITableViewCell 复选标记在选择时发生变化
我是否正确地认为要将“on”的复选标记更改为“off”,我必须更改 none
和 checkmark
on 之间的 CellAccessoryType
didSelectRowAtIndexPath
?
因为我已经这样做了,但我注意到该行为与 iPhone 上自动锁定设置上的复选标记单元格并不完全相同。
或者还有其他处理复选标记的方法吗?
Am I correct in thinking that to change the checkmark for "on" to "off", I must change the CellAccessoryType
between none
and checkmark
on the didSelectRowAtIndexPath
?
Because I have done this but I have noticed the behaviour is not perfectly identical to like the checkmark cells on the auto lock settings on the iphone.
Or is there some other way checkmarks are meant to be handled?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
在视图控制器中保留一个名为
selectedRow
的属性,它表示代表表部分中选中项的行的索引。在视图控制器的
-tableView:cellForRowAtIndexPath:
委托方法中,将cell
的accessoryType
设置为UITableViewCellAccessoryCheckmark
如果单元格的indexPath.row
等于selectedRow
值。否则,将其设置为UITableViewCellAccessoryNone
。在视图控制器的
-tableView:didSelectRowAtIndexPath:
委托方法中,将selectedRow
值设置为所选的indexPath.row
,例如:self.selectedRow = indexPath.row
Keep a property in your view controller called
selectedRow
, which represents the index of a row that represents the checked item in a table section.In your view controller's
-tableView:cellForRowAtIndexPath:
delegate method, set theaccessoryType
of thecell
toUITableViewCellAccessoryCheckmark
if the cell'sindexPath.row
equals theselectedRow
value. Otherwise, set it toUITableViewCellAccessoryNone
.In your view controller's
-tableView:didSelectRowAtIndexPath:
delegate method, set theselectedRow
value to theindexPath.row
that is selected, e.g.:self.selectedRow = indexPath.row
另一个解决方案:
是的:您不必检查
oldIndex
是否为nil
:)Swift 3 及更高版本:
Another solution:
And yeah: you don't have to check if
oldIndex
isnil
:)Swift 3 and later:
迅速:
那么:
swift:
then:
为了迅速
For swift
Zyphrax 提出了一个非常适合我的解决方案!如果您需要清除先前选定的行,只需使用
:
Zyphrax suggested a great solution that worked great for me! And if you need to clear the previous selected row, just use:
in
应该是
而不是
It should be
instead of
亚历克斯的回答只有在添加重新加载表后才对我有用,
以 .h 表示
以 .m 表示
*cellForRowAtIndexPath*
以及任何地方的 didHighlightRowAtIndexPath 或 didSelectRowAtIndexPath
Alex answer worked for me only after adding reload table ,
in .h
in .m
*cellForRowAtIndexPath*
and in anywhere didHighlightRowAtIndexPath or didSelectRowAtIndexPath
如果您想使用自定义图像作为accessoryType,请使用以下代码
If you want to use your custom image as accessoryType use below code