[Ios] فيويثتاغ في إيكولكتيونفيوسيل يعود نيل في سويفت (حتى يتم إعادة استخدام الخلية)


Answers

Question

هذا العنوان الطويل هو مشكلتي تقريبا. بدأت بسيطة مثال التعلم باستخدام إيكولكتيونفيو في مشروع سويفت.

أضفت كولكتيونفيو إلى فيوكونترولر التي تم إنشاؤها بواسطة القالب والمندوب المعين ومصدر البيانات. يتم إنشاء خلية مخصصة في القصة المصورة. تم تعيين معرف إعادة الاستخدام.

كل شيء على ما يرام حتى الآن. لقد وضعت واحد ييلابيل في الخلية المخصصة، وأعطى قيمة العلامة 100.

إليك شفرة أداة التحكم في العرض: https://gist.github.com/tomekc/becfdf6601ba64d5fd5d

و إكسيبرت مثيرة للاهتمام أدناه:

func collectionView(collectionView: UICollectionView!, cellForItemAtIndexPath indexPath: NSIndexPath!) -> UICollectionViewCell! {
        let cell = collectionView.dequeueReusableCellWithReuseIdentifier("element", forIndexPath: indexPath) as UICollectionViewCell

        cell.backgroundColor = UIColor.yellowColor()

        // list subviews
        NSLog("--- ROW %d ---", indexPath.row)
        printSubviews(cell)

        if let labelka = cell.viewWithTag(100) as? UILabel {
            labelka.text = String(format: "Row %d", indexPath.row)
            NSLog("Found label")
        }


        return cell
    }


    func printSubviews(view:UIView) {
        if let list = view.subviews as? [UIView] {
            for uiv in list {
                NSLog("%@ tag:%d", uiv, uiv.tag)
                printSubviews(uiv)
            }
        }
    }

المشكلة هي أن cell.viewWithTag(100) ترجع لا شيء حتى يتم إعادة استخدام الخلية . عند تمرير العرض بحيث يتم إخراج أي من الخلايا من النافذة وإعادة الإجبار، يقوم viewWithTag(100) بإرجاع التسمية ويمكنني تعيين قيمته.

ما هو مثير للاهتمام، وأنا وضعت معا مثال مماثل في الهدف- C وليس هناك مثل هذه المشكلة. حتى عندما بنيت وتشغيل مع beta4 XCode6.

أتساءل عما إذا فاتني شيئا أو هذا سلوك خاطئ؟

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