单击collectionView单元格时如何打开不同的视图控制器
Posted
技术标签:
【中文标题】单击collectionView单元格时如何打开不同的视图控制器【英文标题】:How to open different view controllers when a collectionView cell is click 【发布时间】:2017-05-12 19:40:27 【问题描述】:我想知道在我的 collectionView 中单击特定单元格时如何打开不同的 viewController。对于此示例,假设我有一个如下所示的 collectionView。
假装没有标签,只是一个彩色视图。现在假设我的情节提要中有 3 个不同的 viewControllers 用于每个 collectionView 单元格。故事板看起来像这样。
这就是我发现自己陷入困境的地方。因此,当单击橙色单元格时,我想显示橙色的 viewController,反之亦然。我知道如何为所有单元格显示一个视图控制器,但不为特定单元格显示不同的视图控制器。那么我怎么能做到这一点。非常感谢任何帮助或链接。感谢您花时间阅读我的问题。 :)
【问题讨论】:
使用collectionViewCell,您是在显示图像还是只是用背景颜色标记和查看? 对于这个简单的例子,只有背景颜色,当点击颜色时,我希望它显示具有相同颜色的 viewController。但是,我能够通过使用 Shabir 的第二个答案来实现。使用单元格背景颜色。第一个答案不知道如何添加不同的标识符。那么如何添加不同的标识符呢? 为此您需要使用不同的重用标识符注册单元 【参考方案1】:您可以通过访问单元格背景的颜色属性轻松做到这一点。
override func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath)
let cell: UITableViewCell? = tableView.cellForRow(at: indexPath)
if (cell?.backgroundColor == .red)
// go to red
else if (cell?.backgroundColor == .orange)
// go to orange
【讨论】:
Shabir 感谢您抽出宝贵时间回答我的问题。对于每种颜色,我是否需要将另一个 collectionViewCell 拖到 collectionView 中?因为正如您在故事板屏幕截图中看到的那样,它只有一个单元格。那么我是否需要在 collectionView 中添加更多单元格。 感谢 Shabir,终于能够实现我想要的行为。【参考方案2】:您需要使用不同的标识符来识别您单击的单元格。或者你可以使用单元格的颜色字符串
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
let cell: UITableViewCell? = tableView.cellForRow(at: indexPath)
if (cell?.reuseIdentifier == "red")
// go to red
else if (cell?.reuseIdentifier == "orage")
// go to orange
【讨论】:
KKRocks 感谢您抽出宝贵时间回复我的问题。对于每种颜色,我是否需要将另一个 collectionViewCell 拖到 collectionView 中?因为正如您在故事板屏幕截图中看到的那样,它只有一个单元格。那么我是否需要在 collectionView 中添加更多单元格。 没关系想通了。终于能够使用 Shabir 方法实现我想要的行为。我没有完全理解你的方法。除了情节提要中的原型单元格之外,我如何向其他单元格添加可重用标识符以上是关于单击collectionView单元格时如何打开不同的视图控制器的主要内容,如果未能解决你的问题,请参考以下文章
如何在 swift ios 中单击该单元格时在 UICollectionViewcell 中显示图像?
如何将值从 tableview 传递到 collectionview