2017-08-03 11 views
0

私はUICollectionViewCell(水平スクロール用)を追加したUITableViewCellを持っています。TableViewCell内のCollectionViewCellを再ロード

インターネットが存在しない場合は、空白の表示がされています。私がしたいのは、ユーザーがインターネットに接続してデータを表示する必要がある場合です。 これはランダムに表示され、3つのうち2つのセルはまったく表示されません。 私は、ユーザーがフォアグラウンドで来て、テーブルのデータをリロードしたかどうかを通知しています。ここに私のテーブルセルとコレクションビューセルの構造があります。

コード:

ViewController.swift:

class ViewController: UIViewController { 
    var categories = ["Action", "Drama", "Science Fiction", "Kids", "Horror"] 
} 

extension ViewController : UITableViewDelegate { } 

extension ViewController : UITableViewDataSource { 

    func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? { 
     return categories[section] 
    } 

    func numberOfSections(in tableView: UITableView) -> Int { 
     return categories.count 
    } 

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return 1 
    } 

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as! CategoryRow 
     return cell 
    } 

} 

CategoryRow.swift

class CategoryRow : UITableViewCell { 
    @IBOutlet weak var collectionView: UICollectionView! 
} 

extension CategoryRow : UICollectionViewDataSource { 

    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
     return 12 
    } 

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 
     let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "videoCell", for: indexPath) as! VideoCell 
     return cell 
    } 

} 

extension CategoryRow : UICollectionViewDelegateFlowLayout { 

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { 
     let itemsPerRow:CGFloat = 4 
     let hardCodedPadding:CGFloat = 5 
     let itemWidth = (collectionView.bounds.width/itemsPerRow) - hardCodedPadding 
     let itemHeight = collectionView.bounds.height - (2 * hardCodedPadding) 
     return CGSize(width: itemWidth, height: itemHeight) 
    } 

} 

VideoCell.swift

class VideoCell : UICollectionViewCell { 

    @IBOutlet weak var imageView: UIImageView! 
} 
+0

あなたはストーリーボード –

+0

のViewControllerでのViewControllerにcollectionViewのデリゲートとデータソースをフックしていることを確認してください?私はそれがテーブルのセルにフックする必要があると思いますか? –

+0

collectionviewのdeleteagteとデータソースをtableviewセルに追加する必要があります。そして、tableviewセルのawaknibでcollectionviewをリロードします。 – Hitesh

答えて

0

UITableViewDataSourceのメソッドリロードUICollectionView

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

    let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as! CategoryRow 
    cell.collectionView.reloadData() 
    return cell 
} 
+0

それを試してみました。うまくいきませんでした。 –

関連する問題