به نام خدا

یکی از چیزایی که بهش نیاز داریم کالکشن ویو ها هستن که هدر گذاشتن برای اونا از اهمیت زیادی برخورداره

هدر ها توی کالکشن ویو میتونن Reusable باشن به این معنی که وقتی اسکرول میشن دیتاشون اهمیتی نداره و ممکنه جایگزین بشه و موقعی که بخوان نشون داده بشن دوباره دیتا ها سرجاشون میشینن

Collection Reusable View ها رفتارشون دقیقا شبیه به همون Collection Reusable Cell میمونه یعنی همون کالکشن ویو سل که شما استفاده میکنید.

وقتی میخواید یه کالکشن ویو هدر داشته باشه باید از توی Inspector تیک مربوط به Section Header رو در قسمت Accessories فعال کنید تا به صورت خودکار براتون یه هدر بسازه و شما ویوتون رو توش قرار بدید.

بعد از اون باید وارد محیط کد بشید و دقیقا مثل یک سل از کالکشن ویو Dequeue کنید.

اما اینبار در تابع زیر

collectionView:viewForSupplementaryElementOfKind:atIndexPath:

 

    func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
        let headerView = collectionView.dequeueReusableSupplementaryView(ofKind: UICollectionView.elementKindSectionHeader, withReuseIdentifier: "reusableView", for: indexPath)
        return headerView
    }

توجه داشته باشید که kind از نوع string هست و اگر هدر باشد یا فوتر باشد به ترتیب مقدارش با مقدار زیر یکسان است

 

UICollectionView.elementKindSectionHeader
UICollectionView.elementKindSectionFooter

اگر کمی حرفه ای باشید میدونید که میتونید چندین هدر را ریجیستر کنید و هرکدام را که خواستید استفاده کنید یا بنابر دیتای خود هدر مربوط به آن را جایگزین کنید.

برای ریجیستر کردن یک هدر بر روی یک کالکشن ویو از تابع زیر استفاده میکنیم

collectionView.register(<#nib#>, forSupplementaryViewOfKind: UICollectionView.elementKindSectionFooter, withReuseIdentifier: )

امیدوارم به دردتون خورده باشه

خیلی کارهای دیگه میشه کرد که دیگه وارد جزئیات نمیشم و به خودتون میسپارم

موفق باشید

در پناه حق