2016-04-07 3 views
0

Я создаю Пользовательский UICollectionView в UITableViewCell без Main.Storyboard. Но метод cellForItemAtIndexPath не вызывается, поэтому вы можете помочь мне исправить его наилучшим образом.Пользовательский UICollectionView в UITableViewCell в swift

enter image description here

Это мой код:

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

'' UITableviewCell' содержит UICollectionView'correct? –

+0

Я не понимаю, что я новичок в быстром состоянии, вы можете мне сказать? –

+0

Я дал ответ проверить. –

ответ

2

Я думаю, что делегат не установлен, попробуйте следующее:

override func awakeFromNib() { 
    super.awakeFromNib() 
    print("Hello") 
    self.collectionView.delegate = self 
    self.collectionView.datasource = self 
} 
+0

спасибо, что это работа для меня: D –

+0

У меня есть orther вопрос в именах: [String] У меня есть 5 объектов, но когда я установил его в UICollectionViewCell, он отображает только 1 объект, вы можете помочь мне проверить его? –

+1

О, я знаю, что неправильно .. это вертикально сейчас, я должен изменить его на горизонтальный –

1

Есть 3 возможных причин проблемы:

  1. Если вы установили делегат и источник данных tableview и collectcviewview.

  2. Количество строк, возвращающихся ниже, может быть равно нулю.

    func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int 
    
  3. Если вид коллекции в CEL из Tableview затем проверить numberOfRows возвращающиеся в методе таблицы может быть равен нулю.

    func numberOfRowsInSection(_ section: Int) -> Int 
    

Ссылка ссылка:

https://github.com/DahanHu/DHCollectionTableView

Смежные вопросы