UITableViewCells مخصص متعددة - ReuseIdentifier والخلايا NOT إعادة استخدام

StackOverflow https://stackoverflow.com/questions/1620056

  •  06-07-2019
  •  | 
  •  

سؤال

وأواجه مشكلة مع كيفية إعادة استعمال اي فون الخلايا في الجدول. والمشكلة هي أن أساليب تنفيذها من الطبقة أيضا الحصول على "إعادة استخدامها"، والتغييرات في خلية واحدة الحصول على تطبيقها على الخلايا الأخرى التي تم استخدامها. لدي مؤشر التقدم الذي يجب فقط أن تحديث في خلية واحدة بعد تفاعل المستخدم، ولكن التحديثات مؤشر التقدم وطريقة يمتد داخل الخلية 6TH أسفل أيضا. يحدث ذلك على الخلية 2nd و 7TH، أيضا.

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

 CustomTableCell *cell = [tableView dequeueReusableCellWithIdentifier:nil];

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

وأريد أن أعرف إذا كان هناك طريقة سريعة وغير مؤلمة لجعل اي فون مجرد رسم كل خلية واحدة على حدة من دون إعادة استخدام أي. هل هناك طريقة لربما استخدام التكرار السريع أو لحلقة لخلق خلية واحدة لكل خط في مصدر البيانات؟

واسمحوا لي أن أكرر، أنا لست من أي وقت مضى ستكون لدينا أي أكثر من 7 أو 8 خلايا في جدول واحد على viewController معينة.

هل كانت مفيدة؟

المحلول 3

وماذا عملت أخيرا بالنسبة لي كان يقوم به برمجيا التخطيط. باستخدام واجهة البناء لTableViewCells هو مجرد عربات التي تجرها الدواب. خلق طبقة TableViewCell وطريقة layoutSubviews مع الكثير من CGRects وخصائص إطار ما حصلت عليه للعمل. على الرغم من أن خلايا الحصول على استخدامها، البيانات الفعلية INSIDE THE CELL لا الكتابة.

نصائح أخرى

إذا كنت تريد حقا أن تفعل ذلك ... الإعداد صفيف في viewDidLoad هذا هو 7 أو 8 الطويل. القيام [[UITableView alloc] initWithStyle:UITabeViewCellStyle… reuseIdentifier:@"whatever"] 7 أو 8 مرات، ثم في cellForRowAtIndexPath، والعودة الخلية من مجموعة. يجب عليك التأكد من الإفراج عن مجموعة من الخلايا في طريقة dealloc.

إذا كنت تستخدم فقط 7 الصفوف - reuseIdentifyer لا طائل منه. كيف يعمل؟ تخيل أنك التمرير بعض الجدول مع العديد من الصفوف أسفل. هناك لحظة، عند واحد من الصفوف شولد تكون مخفية وسيتم عرض بعضها البعض. عندها فقط يحصل على الجدول الخلية reusecellidentifyer. فإنه لا تخصيص الذاكرة لخلية أخرى. يأخذك الصف مخفي واستخدامه للصف الجديد لعرضه. عذرا لغتي الإنجليزية)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top