2014-10-23 3 views
1

Я видел много примеров просмотра uicollectionview в ячейке tableview со старыми версиями xcode, но у меня возникли проблемы с поиском/выяснением способов разработки с использованием swift. Я играл с этим исходным кодом ... http://www.brianjcoleman.com/tutorial-collection-view-using-swift/, но мне интересно, как вводить или создавать UICollectionViews в tableViewCells с помощью Swift ...?uiCollectionViews в uitableViewCells с быстрым

Благодарим вас за любое направление или ресурсы, как это сделать с помощью Swift и Storyboards?

// ViewController.swift 
// UICollectionView 
import UIKit 

class ViewController: UIViewController, UICollectionViewDelegateFlowLayout, UICollectionViewDataSource { 

    @IBOutlet var collectionView: UICollectionView? 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
     let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout() 
     layout.sectionInset = UIEdgeInsets(top: 20, left: 10, bottom: 10, right: 10) 
     layout.itemSize = CGSize(width: 90, height: 90) 
     collectionView = UICollectionView(frame: self.view.frame, collectionViewLayout: layout) 
     collectionView!.dataSource = self 
     collectionView!.delegate = self 
     collectionView!.registerClass(CollectionViewCell.self, forCellWithReuseIdentifier: "CollectionViewCell") 
     collectionView!.backgroundColor = UIColor.whiteColor() 
     self.view.addSubview(collectionView!) 
    } 

    func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int { 
     return 1 
    } 

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

    func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 
     let cell = collectionView.dequeueReusableCellWithReuseIdentifier("CollectionViewCell", forIndexPath: indexPath) as CollectionViewCell 
     cell.backgroundColor = UIColor.blackColor() 
     cell.textLabel?.text = "\(indexPath.section):\(indexPath.row)" 
     cell.imageView?.image = UIImage(named: "circle") 
     return cell 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 


} 



// CollectionViewCell.swift 
// UICollectionView 
import UIKit 

class CollectionViewCell: UICollectionViewCell { 

    required init(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
    } 

    let textLabel: UILabel! 
    let imageView: UIImageView! 

    override init(frame: CGRect) { 
     super.init(frame: frame) 

     imageView = UIImageView(frame: CGRect(x: 0, y: 16, width: frame.size.width, height: frame.size.height*2/3)) 
     imageView.contentMode = UIViewContentMode.ScaleAspectFit 
     contentView.addSubview(imageView) 

     let textFrame = CGRect(x: 0, y: 32, width: frame.size.width, height: frame.size.height/3) 
     textLabel = UILabel(frame: textFrame) 
     textLabel.font = UIFont.systemFontOfSize(UIFont.smallSystemFontSize()) 
     textLabel.textAlignment = .Center 
     contentView.addSubview(textLabel) 
    } 
} 

ответ

1

Здесь вы;)

class ViewController: UITableViewController, UICollectionViewDataSource, UICollectionViewDelegate { 

let data: Array<Int>= [1,2,3,4,5,6,7,8,9,10] 

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return data.count 
} 


override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    var cell = tableView.dequeueReusableCellWithIdentifier("Cell") as UITableViewCell 
    return cell 
} 

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

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 
    let cell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as UICollectionViewCell   
    return cell 
} 
} 
+0

awesome ... спасибо! – user3708224

0

Это Swift 2,0 пример CollectionView внутри collectionViewCell, но то же самое относится и к Tableview, как хорошо.

https://github.com/irfanlone/Collection-View-in-a-collection-view-cell

Используя представление коллекции есть, конечно, некоторые преимущества по сравнению с tableviews в этом случае. Другие полезные ссылки:

Учебник: https://ashfurrow.com/blog/putting-a-uicollectionview-in-a-uitableviewcell-in-swift/

Исходный код: https://github.com/ashfurrow/Collection-View-in-a-Table-View-Cell

Надежда, что помогает !!

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