如何取消 table 单元格选择
How to cancel table cell selection
我的所有 table 单元格都允许选择,但是否可以在(此功能)tableView(tableVIew: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
收到通知单元格已被选中之前取消 table 单元格操作触摸?
有方法-(BOOL)tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath
可以防止突出显示单元格,但如果启用了单元格,则无法阻止selection。
你可以
- 在您的应用程序执行期间动态设置要启用或不启用的单元格。
- 通过在
shouldHighlightRowAtIndexPath
中返回 false
来防止突出显示您不想 select 的单元格,然后在 didSelectRowAtIndexPath
中立即中断,然后再执行任何操作。
如果你想取消选择,你可以实现func tableView(tableView: UITableView, willSelectRowAtIndexPath indexPath: NSIndexPath) -> NSIndexPath?
来响应选择事件。
以下代码将取消对某个部分第一行的选择:
func tableView(tableView: UITableView, willSelectRowAtIndexPath indexPath: NSIndexPath) -> NSIndexPath? {
if (indexPath.row == 0) {
return nil
}
return indexPath
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
print("SELECTED!!!")
}
如果您想避免突出显示单元格,您也可以查看 func tableView(tableView: UITableView, shouldHighlightRowAtIndexPath indexPath: NSIndexPath) -> Bool
并实现此方法。
不,您不能停止调用委托
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;
您可以使用以下委托来禁用选择
(void)selectRowAtIndexPath:(nullable NSIndexPath *)indexPath animated:(BOOL)animated scrollPosition:(UITableViewScrollPosition)scrollPosition;
(void)deselectRowAtIndexPath:(NSIndexPath *)indexPath animated:(BOOL)animated;
(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
或者您可以放置验证来控制行为
如果(indexPath.section==0)return无;
我的所有 table 单元格都允许选择,但是否可以在(此功能)tableView(tableVIew: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
收到通知单元格已被选中之前取消 table 单元格操作触摸?
有方法-(BOOL)tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath
可以防止突出显示单元格,但如果启用了单元格,则无法阻止selection。
你可以
- 在您的应用程序执行期间动态设置要启用或不启用的单元格。
- 通过在
shouldHighlightRowAtIndexPath
中返回false
来防止突出显示您不想 select 的单元格,然后在didSelectRowAtIndexPath
中立即中断,然后再执行任何操作。
如果你想取消选择,你可以实现func tableView(tableView: UITableView, willSelectRowAtIndexPath indexPath: NSIndexPath) -> NSIndexPath?
来响应选择事件。
以下代码将取消对某个部分第一行的选择:
func tableView(tableView: UITableView, willSelectRowAtIndexPath indexPath: NSIndexPath) -> NSIndexPath? {
if (indexPath.row == 0) {
return nil
}
return indexPath
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
print("SELECTED!!!")
}
如果您想避免突出显示单元格,您也可以查看 func tableView(tableView: UITableView, shouldHighlightRowAtIndexPath indexPath: NSIndexPath) -> Bool
并实现此方法。
不,您不能停止调用委托
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;
您可以使用以下委托来禁用选择
(void)selectRowAtIndexPath:(nullable NSIndexPath *)indexPath animated:(BOOL)animated scrollPosition:(UITableViewScrollPosition)scrollPosition;
(void)deselectRowAtIndexPath:(NSIndexPath *)indexPath animated:(BOOL)animated;
(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
或者您可以放置验证来控制行为
如果(indexPath.section==0)return无;