ios - 从自定义 TableViewCell 中的 didSelectItemAt 自定义 CollectionViewCell 更改视图控制器
问题描述
我在 tableview 单元格中有一个集合视图,所以我想选择集合视图单元格并将它转到另一个视图控制器。那么我该怎么做呢?
我自己试过,要么什么都不做,“应用程序试图以模态方式呈现一个活动控制器”,要么“尝试呈现..在..其视图不在窗口层次结构中”。
解决方案
在单元格类中添加一个(delegate
在单元格类之外)并在类中声明变量:
protocol CellSelectedDelegate { //Name them as you want
func cellSelected()
}
class TableCell: UITableViewCell {
var delegate: CellSelectedDelegate?
}
然后在单元格中didSelectItem
:
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
delegate?.cellSelected()
}
现在转到您拥有的控制器tableView datasource
类和delegate
方法(假设它们在控制器类中而不是在另一个视图中)并将其添加到cellForItem方法中:
cell.delegate = self
最后一部分,custom delegate
在控制器类中实现方法:
extension YourController: CellSelectedDelegate {
func cellSelected() {
//Present next controller here
}
}
推荐阅读
- angular - 角料芯片多选问题
- c# - 未设置类别条件的 nunit
- r - 使用 R 和 mongolite 更新集合
- ios - Lightning 组件在 Save for iOS 设备上崩溃,并且适用于 Android 和桌面。可能的原因和解决方法是什么?
- hive - 使用游侠策略来屏蔽表列
- javascript - 如何验证元素的祖先是否包含某种类型?
- android - Android + Bitrise + Codecov 忽略不工作
- php - 用PHP提取json字符串
- vuetify.js - 如何在 Vuetify 自动完成中从与“值”不同的键进行搜索?
- regex - awk unix - 匹配正则表达式 - 正则表达式字符串大小限制| 想法?