إضافة UICollectionViews إلى UITableViewCell مخصصة والتي تتم من خلال Xib

لقد فوجئت لمعرفة عدد العقبات التي كانت تواجه تطبيق UICollectionView في UITableViewCell. لذلك ، هذا البرنامج التعليمي هنا ، وآمل أن يوفر لك الكثير من الوقت.

ملاحظة: هذا البرنامج التعليمي ليس للمبتدئين. من المفترض أن تكون على دراية بجدول tableViews وإنشاء خلايا مخصصة مع ملفات xib.

أيضا ، أنا لا أصف أي شيء عن المكون المرئي.

1) إضافة UICollectionView إلى Xib TableViewCell الخاص بك

  1. اسحب UICollectionView إلى TableViewCell Xib
  2. إضافة القيود
  3. واكتشف أنه لا يمكنك إضافة CollectionViewCells إلى UICollectionView المضافة حديثًا :)

تبين أنك بحاجة إلى ملف منفصل لوضع أي خلايا عرض مجموعة تريد عرضها. (عندما يكون UICollectionView في ملف Xib)

2) إضافة ملف UICollectionViewCell و Xib إلى المشروع الخاص بك

صورة

يمكنك القيام بكل ما تريده في خلية عرض المجموعة Xib خلية (إضافة تسمية ، صورة ، وما إلى ذلك) ، لأغراض هذا البرنامج التعليمي ، نحن لا نلمسها هنا.

تأكد من إعطاء الخلية الخاصة بك resuableIdentifier.

صورة

3) تحقق من أن فئة TableViewCell لديها مصدر بيانات UICollectionView وتفويض.

الخطوة 1: العودة إلى ملف tableViewCells Xib الخاص بك.

صورة

الخطوة 2: اسحب من مجموعتكعرض إلى "ملف المالك" وحدد مصدر البيانات ثم المفوض.

صورة

الخطوة 3: اسحب من مجموعتكعرض إلى فئة TableViewCell الخاصة بك وإنشاء IBOutlet

صورة

الخطوة 4: تحقق من تطابق بروتوكولات مصدر بيانات UICollectionView والفئة TableViewCell.

class TableViewCell: UITableViewCell, UICollectionViewDelegate, UICollectionViewDataSource { @IBOutlet weak var collectionView: UICollectionView! override func awakeFromNib() { super.awakeFromNib() // Initialization code self.collectionView.dataSource = self self.collectionView.delegate = self self.collectionView.register(UINib.init(nibName: "CollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "collectionViewID") } override func setSelected(_ selected: Bool, animated: Bool) { super.setSelected(selected, animated: animated) // Configure the view for the selected state } func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { return 15 } func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "collectionViewID", for: indexPath as IndexPath) as! CollectionViewCell return cell } } 

شرح الكود:

  1. إضافة UICollectionViewDelegate و UICollectionViewDataSource إلى وصف الفئة
  2. جعل مجموعة مصدر البياناتعرض وتفويض = النفس في awakeFromXib
  3. إضافة رقم الوظيفةأشياءالقسم
  4. إضافة وظيفة cellForItemAt
  5. قم بإنشاء خلية باستخدام reuseIdentifier كخلية مخصصة.

خطوات استكشاف الأخطاء وإصلاحها:

  1. هل تم تحديد معرفاتي وصحيحها؟
  2. هل سحبت من مجموعتيعرض إلى "مالك الملفات" في ملف Xib الخاص بك؟

إذا كان لديك أسئلة ، فاكتب في التعليقات.

إذا كان هذا ساعدك أو سوف يساعد في المستقبل ، مثل.

آمل أن يوفر شخص ما الكثير من الوقت.

Source: https://habr.com/ru/post/ar449478/


All Articles