UItableView中的UICollectionView只获取空的tableview,我错过了什么?

时间:2015-05-13 11:08:12

标签: ios xcode swift

我要求在表格视图单元格中使用集合视图,但是,我正在获取银行表格视图单元格,任何人都可以告诉我我缺少的内容

![我的故事板]  包含
    查看,
    泰伯维,
    TableViewCell,
    内容查看,
    的CollectionView,
    collectionviewcell。
在里面      用于显示数据的imageview和标签

我有三个班 第一个customcollectionview

class CustomCollectionViewCell: UICollectionViewCell {
    @IBOutlet var AssetImage: UIImageView!
    @IBOutlet var assetLabeldesc: UILabel!

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

    }

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

    override func awakeFromNib() {
        super.awakeFromNib()

    }
}

2)

class CustomTableViewCell: UITableViewCell,UICollectionViewDataSource,UICollectionViewDelegate {
    @IBOutlet var AssetCollectionView: UICollectionView!

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

    required init(coder aDecoder: NSCoder) {
        // fatalError("init(coder:) has not been implemented")
        super.init(coder: aDecoder)
    }

    var folderCount:Int?
        {
        didSet(value)
        {

        }
    }

    override func awakeFromNib() {
        super.awakeFromNib()

        var aFlowLayout : UICollectionViewFlowLayout = UICollectionViewFlowLayout()
        aFlowLayout.scrollDirection = UICollectionViewScrollDirection.Horizontal
        aFlowLayout.itemSize = CGSizeMake(60.0, 90.0)
        aFlowLayout.minimumLineSpacing = 10.0
        aFlowLayout.minimumInteritemSpacing = 0.0
        aFlowLayout.sectionInset = UIEdgeInsetsMake(2, 9, 0, 10)
        AssetCollectionView.collectionViewLayout = aFlowLayout
        AssetCollectionView.registerClass(CustomCollectionViewCell.self, forCellWithReuseIdentifier: "CollectionViewCell")
        var cNib:UINib? = UINib(nibName: "CustomCollectionViewCell", bundle: nil)
        AssetCollectionView.registerNib(cNib, forCellWithReuseIdentifier: "CollectionViewCell")
        AssetCollectionView.frame = self.bounds
        // Initialization code
    }

    override func setSelected(selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    }
    class func CreateCustomCell() -> CustomTableViewCell
    {
        var nibElements: Array = NSBundle.mainBundle().loadNibNamed("CustomTableViewCell", owner: self, options: nil)
        var item: AnyObject?
        for item in nibElements
        {
            if item is UITableViewCell
            {
                return item as CustomTableViewCell
            }
        }
        return item as CustomTableViewCell
    }

    func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell
    {
        var cell :CustomCollectionViewCell? = collectionView.dequeueReusableCellWithReuseIdentifier("CollectionViewCell", forIndexPath: indexPath) as? CustomCollectionViewCell
        //hear u can modify which image to be displayed in the collection view cell
        let imageNameString = "Logo.png"
        let front = UIImage(named: imageNameString)
        cell?.AssetImage.backgroundColor = UIColor.orangeColor()
        cell?.AssetImage.image = front
        cell?.assetLabeldesc.text = "Card:\(indexPath.row)"
        return cell!
    }

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

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

3)

class AssetViewController: UIViewController,UITableViewDataSource,UITableViewDelegate
{

    var cardCountArray:[Int] = []
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        cardCountArray = [5,15,6,12,7,10]
    }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func numberOfSectionsInTableView(tableView: UITableView) -> Int
    {
        return cardCountArray.count
    }

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
    {
        return  1
    }
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
    {
        var cell:CustomTableViewCell? = tableView.dequeueReusableCellWithIdentifier("CELL") as? CustomTableViewCell;
        if(cell == nil)
        {
            cell = CustomTableViewCell.CreateCustomCell()
        }
        cell?.folderCount = cardCountArray[indexPath.section]
        cell?.AssetCollectionView.reloadData()
        cell?.clipsToBounds = true
        return cell!;
    }

    func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat
    {
        return 100.0
    }

    func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {

        var headerView:UIView = UIView(frame: CGRectMake(0, 0, tableView.bounds.size.width, 70.0))
        var labelTitle:UILabel = UILabel(frame: CGRectMake(0, 0, tableView.bounds.size.width, 35))
        var descriptionTitle:UILabel = UILabel(frame: CGRectMake(0, 20,tableView.bounds.size.width , 30))
        headerView.addSubview(labelTitle)
        headerView.addSubview(descriptionTitle)
        labelTitle.text = "GroupName:\(section)"
        descriptionTitle.text = "Description \(cardCountArray[section])"
        return headerView
    }

    func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        return 50.0
    }

    /*
    // MARK: - Navigation

    // In a storyboard-based application, you will often want to do a little preparation before navigation
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        // Get the new view controller using segue.destinationViewController.
        // Pass the selected object to the new view controller.
    }``
    */

}

有人可以告诉我缺少什么吗?

1 个答案:

答案 0 :(得分:0)

您似乎正在为某些元素添加子视图,但不会为您的collectionView添加:

我看到为标签添加的视图:

func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
headerView.addSubview(labelTitle)
headerView.addSubview(descriptionTitle)

您还需要添加集合视图。您可以在此处执行此操作,以便将其添加到每个单元格中:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell:CustomTableViewCell? = tableView.dequeueReusableCellWithIdentifier("CELL") as? CustomTableViewCell;

我没有在另一个项目上使用addSubview就解决了这个问题。在我的情况下,我发起了

collectionView.datasource = self
collectionView.delegate = self

我最近发布了一个类似的问题,有人回应了一个可能对您有帮助的方法。 UICollectionView cells with Images inside UITableView prototype