我对iOS编程比较陌生,尝试过一些东西,但无济于事 .
我想把 CollectionView
放在 TableViewCell
里面 . 我可以单独编码,但不了解如何设置和引用 TableViewCell
中的每个 CollectionView
.
我找到了这个教程,http://ashfurrow.com/blog/putting-a-uicollectionview-in-a-uitableviewcell/,它展示了如何在Objective-C中完成它,但我一直在努力使用Obj-C .
有没有人知道Swift教程还是可以提供帮助?我正在创建一个简单的项目/代码,我将很快发布,以尝试和协助 .
编辑1
我刚刚找到了上述链接的快速版本 . 我现在正在解决这个问题,但似乎过于复杂,修改了AppDelegate .
https://github.com/DahanHu/DHCollectionTableView
非常感谢Rob
3 回答
创建一个通常的UITableView并在你的UITableViewCell中创建UICollectionView . 您的collectionView委托和数据源应符合该UITableViewCell .
试试看吧
在您的ViewController中
正如您所看到的,我创建了两个不同的单元格,一个自定义的TableViewCell,仅在行索引为3时返回,而在其他索引中返回基本的UITableViewCell .
自定义“TableViewCell”将具有我们的UICollectionView . 所以创建一个UITableViewCell子类并记下下面的代码 .
希望能帮助到你 .
详情
xCode 8.2.1,swift 3
快速启动
结果
正确的MVC示例
结果
想想MVC和嵌入从未像上面那样编程 . UIView的子类( - >这就是单元格的真正含义)永远不是tableView的委托和数据源的委托类(对于collectionView也是如此) .
你有没有创建tableview的子类来完成这个子类中的所有编程工作 - 不!你在viewcontroller中做到这一点 - 因为你在Controllers中创建了UIView,以“控制”它们 . 所以你必须做的正确的方法是:
Let me give ya a example (on the oldschool "better-understanding" way):
使用tableView创建一个ViewController,并将此collectionView添加(addSubview)到您的UITableViewCell .
您在Storyboard上有一个ViewController,并且还嵌入了一个UITableView
它还与您的ViewController类作为Outlet(以及他的委托和数据源)连接
而不是在Custom UITableViewCell上添加CollectionView,只需添加一个“内容持有者”UIView(带约束) . 稍后您将使用此视图将集合视图添加为子视图 .
现在使用XIB创建一个新的UIViewController(新文件> ...) OR 从故事板中的属性面板拖放一个新的UIViewController,并创建一个UIViewController类 . 别忘了互相联系 . (我们会做第一个以便更好地理解)
新的ViewController就像一个带有CollectionView的ViewController一样处理(类似于1.但是collectionView)
在这个带有collectionView的新ViewController中,你可以像往常一样处理每个人,使用委托和数据源等等......
NOW :在带有tableView的ViewController(第一个)上,您在每个单元格(cellForRowAtIndexPath)上实例化新的ViewController(带有collectionView),并将其collectionView作为子视图添加到您创建的当前视图(如内容持有者),例如:
让myViewControllerWithCollectionView = MyViewControllerWithCollectionView()myCell.contentHolderView.addSubview(myViewControllerWithCollectionView.collectionView)
What you can also do (and maybe the newer and better way, never tried myself but I'm sure it will work very well, is: UIContainerView).
而已!一些提示:
myViewControllerWithCollectionView.collectionView
要获取更多信息,要将Actions从collectionView返回到当前View,请在视图中添加自定义协议(委托) . 永远不要将delegView中的委托和数据源设置到主tableViewController,只需处理右侧viewcontroller上的所有内容,并在需要时将信息推送到任何其他viewcontroller .