سؤال

أنا أعمل على متعددة UICollectionViewControllerS التي تظهر جميعها نفس المحتويات مع تخطيطات مختلفة.

حسب أبل CollectionViewTransition نموذج التطبيق والجلسة 218 من WWDC 2013 ، UICollectionViewController يسمى خاصية useLayoutToLayoutNavigationTransitions هذا يتعامل بشكل أساسي مع التحولات التنقل عن طريق الاستيفاء من "و" إلى "إلى تخطيطات عرض المجموعة.

لنفترض أن لدي اثنين UICollectionViewControllers اتصل MasterCollectionViewController و تفاصيل CollectionViewController. عندما أدفع تفاصيل CollectionViewController من MasterCollectionViewController, ، يتم تغيير التصميم بشكل صحيح ، لكن عرض المجموعة لا يزال يستخدم مصدر البيانات المعلن عنه MasterCollectionViewController.

هذه مشكلة بالنسبة لي ، لأنه في كل من UICollectionViewControllerS ، أحتاج إلى إعادة ترتيب تكوينات القسم/العنصر. مثال جيد على ما أحاول القيام به هو تطبيق الصور على iOS 7. تحتوي علامة التبويب الأولى لهذا التطبيق على ثلاث وحدات تحكم عرض: سنوات ومجموعات ولحظات. تُظهر وحدة التحكم في العرض هذه نفس المحتويات: الصور. ما يختلف بين كل وحدة تحكم عرض هو كيفية تجميع الصور في القسم. وتجميع القسم هو مسؤولية UICollectionViewDataSource وهي قضية هنا.

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

أي مساعدة أو تعليق سيكون موضع تقدير.

شكرًا!

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

المحلول

أرى نفس السلوك وأوافق على أنه أقل من المثالي.

القضية الأساسية هنا هي أن نفس الشيء UICollectionView يتم مشاركة المثيل/تم تمريره بين وحدات التحكم في العرض. جربت محاولة تغيير المندوب و DataSource من UICollectionView ولكن واجهت مشاكل مختلفة.

في النهاية ، كان الحل الذي انتهى بي اعتماده هو جعل السيد UICollectionViewController مندوب من UINavigationController, ، تنفيذ:

– navigationController:willShowViewController:animated:

... باستخدام هذا لتبديل أ controllerMode الخاصية ثم إضافة عبارات التبديل إلى -collectionView:cellForItemAtIndexPath: و -collectionView:didSelectItemAtIndexPath: لتوفير السلوك المطلوب في الوضع. لقد أضفت أيضًا رمزًا إلى -setControllerMode: للقيام بأي تغييرات حالة مطلوبة في وحدة التحكم في العرض الرئيسي.

امل ان يساعد!

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