iOS 7 : Selecting a UICollectionViewCell will select cells in the UITableView within it

标签 ios uitableview ios7 uicollectionview

简而言之:如何防止 Collection View 单元格的选择影响该 Collection View 单元格内的 TableView 单元格的选择状态?

我有一个 UICollectionView,其中的单元格在选择时会全屏显示。这些单元格包含一个 UITableView,它将显示使用信息。

我遇到的问题是 TableView 中的单元格显示得就像被选中一样。我移动了一些东西,以始终全屏显示单元格,这使我能够确认:当选择 Collection View 单元格时,其中的 TableView 单元格也会以所选样式显示。

请注意,我说它们以所选样式显示,而不是它们被选中。就表格 View 而言,它们已选择。

[tableView indexPathsForSelectedRows]; 不返回任何索引路径。 tableView:willSelectRowAtIndexPath:(我可以从中返回 nil)永远不会被调用。因此,可以肯定地说,表格 View 不会将自己的单元格视为被选中。

但是,我可以在“显示”中确认表格 View 单元格包含选定的背景 View (请参见下面的最后一个屏幕截图)。这仅适用于选择 Collection View 单元格时可见的 TableView 单元格的情况:对于列表中距离足够远而最初位于屏幕之外的单元格,不会发生这种情况。

我可以使用 cell.selectionStyle = UITableViewCellSelectionStyleNone; 隐藏问题,最终,这可能是我的解决方案:表格 View 单元格无论如何都不可选择,因此像这样绘制问题应该可行在我的情况下。

但是,这并没有回答更大的问题:这里到底发生了什么?

屏幕截图

普通 Collection View 单元格(整个事情是一个单元格):

Normal cell view

选定的 Collection View 单元格,在 TableView 上使用灰色选定样式:

Selected cell

Reveal,显示选定的背景 View 。在这种情况下,当选择 Collection View 单元格时,包含“删除”按钮的表格单元格不可见,因此它没有像上面的单元格那样获得选择样式:

Selected Background view

最佳答案

我已经用这种方式重写了UITableViewCell的方法

func setHighlighted(_ highlighted: Bool, animated: Bool)
{
   //Leave Empty
}

Apple 的行为可能是正确的,因为通过这种方式,您可以跳过所有子项的迭代并手动设置属性,但为什么我无法使用 UICollectionViewDelegate 方法选择是否需要它?

func collectionView(_ collectionView: UICollectionView, shouldHighlightItemAt indexPath: IndexPath) -> Bool

关于iOS 7 : Selecting a UICollectionViewCell will select cells in the UITableView within it,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23111677/

相关文章:

iOS - CATiledLayer renderInContext : results in distorted image

ios - 单击一个按钮将多个数据行发送到 firebase

ios - GKComponentSystem 在更新周期中没有组件

ios - NSOperationQueue 每行 UITableView

ios - WKWebView 的 pageCount 不正确;这可以纠正或完全消除吗?

iphone - UITableViewCell(s) 的默认图像在滚动时被其他图像覆盖

ios - 在自定义转换中获取 nil [transitionContext containerView]

ios - ios7 后台获取调用一次

javascript - Phonegap 没有运行 javascript

iOS:reloadData 时将 UITableView 保持在同一位置