如何将数组元素中的文本标签附加到所有不同的标题

时间:2018-01-19 10:46:19

标签: ios swift swift3

我想添加从json获取的数组中的标题但是标题只显示最后一个元素而不是其余元素

这是代码

func collectionView(_ collectionView:UICollectionView,viewForSupplementaryElementOfKind kind:String,at indexPath:IndexPath) - > UICollectionReusableView     {         让sectionHeaderView = collectionView.dequeueReusableSupplementaryView(ofKind:kind,withReuseIdentifier:" sectionHeaderIdentifier",for:indexPath)as! SectionHeaderReusableView

    for i in 0..<sectionNames.count
    {

        sectionHeaderView.sectionHeader.text = sectionNames[indexPath[i]]
    }

    return sectionHeaderView
}

请提前帮助谢谢!

2 个答案:

答案 0 :(得分:0)

  • 在故事板中,选择您的收藏视图,选择附件 - Section Header。
  • 现在,您的故事板中会显示一个部分标题。添加UILabel 它。
  • 在项目中创建一个类型为UICollectionReusableView的新文件 称之为SectionHeaderCollectionReusableView。
  • 在Storyboard中,选择Section Header Collection Reusable View 并给它一个标识符,称之为“SectionHeader”。
  • 然后给它一个自定义类:“SectionHeaderCollectionReusableView”
  • 在SectionHeaderCollectionReusableView.swift文件中,制作一个
    IBOutlet为您制作的标签,并将其命名为headerLabel。
  • 最后,在您的UICollectionViewController代码中,添加一个函数:

    override func collectionView(collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, atIndexPath indexPath: NSIndexPath) -> SectionHeaderCollectionReusableView
         {     
           let header = collectionView.dequeueReusableSupplementaryViewOfKind(UICollectionElementKindSectionHeader, withReuseIdentifier: "SectionHeader", forIndexPath: indexPath) as! SectionHeaderCollectionReusableView
           header.headerLabel.text = "YOUR_HEADER_TEXT"
           //You can add elements to view instead of just a label
           let view: UIView(frame: CGRect(0,0,200,100))
           view.backgroundColor = .red
           return header}
    

答案 1 :(得分:0)

内部给出的for循环将一直迭代到最后一个元素,因此根据发布的代码,总是最后一个元素只显示。

因此,请尝试删除for循环,并仅在当前索引处加载sectionNames。