我正在尝试在TableViewCell内设置CollectionView。我已经通读了很多有关堆栈问题,tut和视频的手册,到目前为止,我已经有了看似正确的方法,但是我的集合视图仍然没有加载到表格视图单元格中。
代码:
import UIKit
class TheaterCell: UITableViewCell {
@IBOutlet var theaterName: UILabel!
@IBOutlet var theaterLocation: UILabel!
@IBOutlet var showtimesCollection: UICollectionView!
override func awakeFromNib() {
super.awakeFromNib()
showtimesCollection.delegate = self
showtimesCollection.dataSource = self
showtimesCollection.reloadData()
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}
extension TheaterCell: UICollectionViewDataSource, UICollectionViewDelegate {
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 10
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = showtimesCollection.dequeueReusableCell(withReuseIdentifier: "timeCell", for: indexPath) as! TimeCell
cell.time.text = "1:00"
return cell
}
}
Tableview从ViewController加载并正在显示其单元格和元素,但集合视图未在该单元格内加载。
答案 0 :(得分:2)
这对我有用,我认为问题来自您注册手机的方式
X Y C|Z D
-----+---
0 0 0|0 0
0 0 1|1 0
0 1 0|1 0
0 1 1|0 1
1 0 0|1 0
1 0 1|0 1
1 1 0|0 1
1 1 1|1 1
答案 1 :(得分:0)
我做什么,我使用情节提要,并通过拖到类中来设置情节提要的委托和数据源。
a)将TableView的委托和数据源设置为ViewController
b)将CollectionView的委托和数据源设置为TableViewCell(TheaterCell)
ViewController代码:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
}
extension ViewController:UITableViewDelegate, UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let theaterCell:TheaterCell = tableView.dequeueReusableCell(withIdentifier: "TheaterCell", for: indexPath) as! TheaterCell
theaterCell.reloadCollectionView()
return theaterCell
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 200
}
}
TheaterCell代码:
class TheaterCell: UITableViewCell {
@IBOutlet var showtimesCollection: UICollectionView!
override func awakeFromNib() {
super.awakeFromNib()
}
func reloadCollectionView() -> Void {
self.showtimesCollection.reloadData()
}
}
extension TheaterCell: UICollectionViewDataSource, UICollectionViewDelegate {
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 10
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = showtimesCollection.dequeueReusableCell(withReuseIdentifier: "timeCell", for: indexPath) as! TimeCell
cell.time.text = "1:00"
return cell
}
}
TimeCell代码:
class TimeCell: UICollectionViewCell {
@IBOutlet var time: UILabel!
}
以下是输出:
注意:如果您不使用故事板,而仅使用代码制作COLLECTIONVIEW或桌子,那么您必须将自己的手机注册为: A)TheatreCell必须注册到ViewController类中 B)TimeCell必须注册到TheaterCell类中