UITableViewCell 中的 UICollectionView 如何设置选择以将数据从当前视图传递到另一个视图
Posted
技术标签:
【中文标题】UITableViewCell 中的 UICollectionView 如何设置选择以将数据从当前视图传递到另一个视图【英文标题】:UICollectionView inside UITableViewCell how to set the selection to pass data from the current view to another one 【发布时间】:2019-02-06 11:30:07 【问题描述】:我有一个视图控制器,里面有一个表视图,在表视图中,我实现了一个带有水平滚动的集合视图,数据显示正确,但是当我单击传递一个集合视图单元格时,我想转到另一个视图控制器字符串到那个视图,我该如何处理这个过程。 提前致谢
【问题讨论】:
您可以使用 Pushing view controller、Protocol Delegate、Notification 等传递数据。 请参考这个堆栈答案:***.com/a/54309122/3278326 问题是当我单击集合视图单元格时它只单击它并且不影响表格单元格,我使用实例在另一个视图中设置字符串的值以在执行之前进行测试使用委托方法 【参考方案1】:你有两个选择
1) 在视图控制器中实现集合视图委托和数据源。您可以在 tableview 的 cellForRowAt 方法中执行此操作,例如 cell.collectionview.datasource = self
2) 您可以创建委托/闭包以从 Collection View -> TableView Cell --> UIViewController 传递数据
希望对您有所帮助如果您需要示例,请告诉我
示例
由于您在理论上难以理解,这里是示例
假设在你的视图控制器中
你有如下表视图数据源
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
let cell = tableView.dequeueReusableCell(withIdentifier:"identifer", for: indexPath) as! YourTableViewCell
// You have collection view inside tableview cell so
cell.yourCollectionViewObject.dataSource = self
cell.yourCollectionViewObject.delegate = self
return cell
在您的视图控制器中实现或移动数据源和委托,并推送或呈现您想要的视图控制器
【讨论】:
我用它的数据实现了集合视图单元格,然后用协议实现了表格单元格并将其中的集合单元格出列,然后在控制器中我实现了表格协议,这就是单元格视图正确的原因但是点击是分开的,就像我点击集合单元格时它只点击这个单元格而不是表格单元格 @TamerEzzat 您想确定点击 Collectionview 单元格时点击了哪个 tableview 单元格? 我希望控制器在单击 collectionview 单元格时显示另一个,但它是在 tableview 单元格的 swift 文件中定义的,因此它不能调用 self.present 函数 @TamerEzzat 然后你必须创建委托。创建委托(协议)并将事件传递给 UIViewController ,在您的情况下,委托将是 Colectioinview 单元格到 -> tableview 单元格 -> UIView Controller @TamerEzzat 另一个选项是不要将数据源和委托设置为 tableview 单元格的 swift 文件。您可以在自己的视图控制器中执行此操作(请参阅答案中的选项 1)以上是关于UITableViewCell 中的 UICollectionView 如何设置选择以将数据从当前视图传递到另一个视图的主要内容,如果未能解决你的问题,请参考以下文章
collectionView:didSelectItemAtIndexPath:没有被调用
UITableViewCell 中的 UIDatePicker 更新 UITableViewCell 文本标签
更改 UITableViewCell 中的对象也更改了重用 UITableViewCell 的对象
确定 UITableViewCell 中的 UIButton