【问题标题】:UITableView allow two cells to have selected style at the same timeUITableView 允许两个单元格同时选择样式
【发布时间】:2019-06-21 17:17:26
【问题描述】:

我使用默认的 Xcode 模板创建了一个 UItableView,并将其配置为显示五行。 我选择表格上的第一个单元格。当我选择另一个单元格时,我注意到第一个单元格保持选中状态,直到我将手指从第二个单元格移开。

示例: http://img190.imageshack.us/img190/7184/cellsz.jpg

我希望一个单元格在触摸时被选中,而不是在触摸删除时被选中。 我在网上和苹果文档中搜索,但没有找到当用户触摸屏幕进行选择时调用的方法。

有人知道这方面的信息吗?

【问题讨论】:

标签: iphone uitableview templates selection cell


【解决方案1】:

我终于成功抑制了这种双重选择效应。

当系统检测到一个单元格上的内部修饰事件时,该单元格将被选中。 在它被选中之前,单元格有一个高亮状态,在触摸时会出现。

要解决此问题,我必须在我的自定义 UITableViewCell 中重写 - (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated 方法,并且在此方法中不执行任何操作。

这样表格将永远不会同时有两个选定的样式单元格。

编辑后引用

这个解决方案对我来说已经足够了,但是 它不能解决我的第一个请求 在“触摸”上更改单元格的选择 事件而不是“触摸”事件。

嗯...我认为这是不可能的。如果我们有这个选项,当我们只想在表格视图中滚动时,我们可以选择一个单元格。

【讨论】:

    【解决方案2】:

    我不知道你的问题的答案,但有一个报价。您可以在您的

    中使用复选标记标记所选行
    -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    

    委托方法。然后拨打[tableView deselectRowAtIndexPath:indexPath]。

    【讨论】:

    • 嗯...我不太清楚。我道歉。实际上在我的情况下,总是有一个选定的单元格。问题是如果选择了一个单元格,则第二个单元格将具有选定的触摸样式,但不会被选中。我已经尝试过这种方法,但是当您从单元格中移除手指时调用 didSelectRowAtIndexPath,而不是在您触摸单元格并停留在其上时调用。我添加了一个屏幕截图来显示它的外观。 img190.imageshack.us/img190/7184/cellsz.jpg
    • 我的意思是,如果你只需要标记选中的行,你可以将它的附件类型更改为例如 UITableViewCellAccessoryTypeCheckmark 并在该委托方法中调用 deselectRow。
    【解决方案3】:

    没有框架提供的选择多行的解决方案。 Morion 有一个很好的方法可以通过复选标记来做到这一点。您还可以查看 Matt Gallagher 的 this 文章,他在其中实现了您想要的。

    【讨论】:

    • 我不想要多个单元格选择。我不清楚我道歉。我想避免两个单元格同时具有选定的样式。这使应用程序看起来很糟糕。看看我在帖子中添加的屏幕截图。
    猜你喜欢
    • 2023-03-12
    • 1970-01-01
    • 2012-12-18
    • 1970-01-01
    • 1970-01-01
    • 2011-07-31
    • 2020-05-03
    • 2011-09-04
    • 1970-01-01
    相关资源
    最近更新 更多