我在UICollectionView
没有UITableViewCell
的情况下创建了自定义Main.Storyboard
。但是cellForItemAtIndexPath
方法没有被调用,所以你可以帮助我以最好的方式解决它。
这是我的代码:
class IndexRow: UITableViewCell, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {
var names:[String] = ["Movie 1","Movie 2","Movie 3","Movie 4","Movie 5","Movie 6"]
@IBOutlet weak var collectionView: UICollectionView!
override func awakeFromNib() {
super.awakeFromNib()
print("Hello")
}
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return names.count
}
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = self.collectionView.dequeueReusableCellWithReuseIdentifier("videoCell", forIndexPath: indexPath) as UICollectionViewCell
//let url:NSURL = NSURL(string: names[indexPath.row])!
//let dt :NSData = NSData(contentsOfURL: url)!
print("Hello collection")
let imageView:UIImageView = UIImageView(frame: CGRectMake(5, 5, 180, 270))
imageView.image = UIImage(named: "poster.jpg")
imageView.contentMode = .ScaleAspectFit
cell.addSubview(imageView)
let lableView:UILabel = UILabel(frame: CGRectMake(5,300,180,35))
lableView.text = names[indexPath.row]
lableView.textAlignment = NSTextAlignment.Center
cell.addSubview(lableView)
return cell
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
let itemsPerRow:CGFloat = 2
let hardCodedPadding:CGFloat = 0
let itemWidth = (collectionView.bounds.width / itemsPerRow) - hardCodedPadding
let itemHeight = collectionView.bounds.height - (hardCodedPadding)
return CGSize(width: itemWidth, height: itemHeight)
}
答案 0 :(得分:2)
我认为代理未设置,请尝试以下操作:
override func awakeFromNib() {
super.awakeFromNib()
print("Hello")
self.collectionView.delegate = self
self.collectionView.datasource = self
}
答案 1 :(得分:1)
有三个可能的问题原因:
如果您设置了tableview和collecionview的委托和数据源。
以下方法返回的行数可能为零。
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
如果集合视图在tableview的cel中,那么检查numberOfRows返回的table方法可能为零。
func numberOfRowsInSection(_ section: Int) -> Int
参考链接: