我对iOS编程比较陌生,并且尝试了一些尝试但无济于事。
我想在CollectionView里面放一个TableViewCell。我可以单独每个代码,但不知道如何设置和引用每个CollectionView内TableViewCell。
CollectionView
TableViewCell
我在http://ashfurrow.com/blog/putting-a-uicollectionview-in-a- uitableviewcell/中找到了本教程,该教程显示了如何在Objective-C中完成此操作,但我一直都在为Obj-C苦苦挣扎。
有谁知道Swift教程或可以提供帮助吗?我正在创建一个简单的项目/代码,我将稍后发布以尝试和帮助。
编辑1
我刚刚找到了上面链接的快速版本。我现在正在解决此问题,但修改AppDelegate似乎过于复杂。
https://github.com/DahanHu/DHCollectionTableView
非常感谢Rob
创建一个普通的UITableView并在UITableViewCell中创建UICollectionView。您的collectionView委托和数据源应符合该UITableViewCell。
只是通过这个
在您的ViewController中
// Global Variable var tableView: UITableView! override func viewDidLoad() { super.viewDidLoad() tableView = UITableView(frame: self.view.bounds) tableView.delegate = self tableView.dataSource = self self.view.addSubview(tableView) tableView.registerClass(TableViewCell.self, forCellReuseIdentifier: "TableViewCell") tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "NormalCell") } func numberOfSectionsInTableView(tableView: UITableView) -> Int { return 1 } func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return 5 } func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { if indexPath.row == 3 { var cell: TableViewCell = tableView.dequeueReusableCellWithIdentifier("TableViewCell", forIndexPath: indexPath) as! TableViewCell cell.backgroundColor = UIColor.groupTableViewBackgroundColor() return cell } else { var cell: UITableViewCell = tableView.dequeueReusableCellWithIdentifier("NormalCell", forIndexPath: indexPath) as! UITableViewCell cell.textLabel?.text = "cell: \(indexPath.row)" return cell } }
如您所见,我创建了两个不同的单元格,一个自定义TableViewCell仅在行索引为3时返回,而在其他索引中则返回一个基本UITableViewCell。
自定义“ TableViewCell”将具有我们的UICollectionView。因此,创建一个UITableViewCell子类并写下以下代码。
import UIKit class TableViewCell: UITableViewCell, UICollectionViewDataSource, UICollectionViewDelegate { var collectionView: UICollectionView! override init(style: UITableViewCellStyle, reuseIdentifier: String?) { super.init(style: style, reuseIdentifier: reuseIdentifier) let layout = UICollectionViewFlowLayout() layout.scrollDirection = UICollectionViewScrollDirection.Horizontal collectionView = UICollectionView(frame: self.bounds, collectionViewLayout: layout) collectionView.delegate = self collectionView.dataSource = self collectionView.registerClass(UICollectionViewCell.self, forCellWithReuseIdentifier: "CollectionViewCell") collectionView.backgroundColor = UIColor.clearColor() self.addSubview(collectionView) } required init(coder aDecoder: NSCoder) { super.init(coder: aDecoder) } // MARK: UICollectionViewDataSource func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int { return 1 } func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { return 10 } func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { let cell: UICollectionViewCell = collectionView.dequeueReusableCellWithReuseIdentifier("CollectionViewCell", forIndexPath: indexPath) as! UICollectionViewCell if indexPath.row%2 == 0 { cell.backgroundColor = UIColor.redColor() } else { cell.backgroundColor = UIColor.yellowColor() } return cell } }
希望能帮助到你。