قوة التحميل/التفريغ الرأي
-
22-07-2019 - |
سؤال
كيف يمكنني إعداد تحكم عرض لتحديث الحقول في طريقة العرض فقط يتم الضغط على الملاحة تحكم والنشرات الكائنات عندما برزت من الملاحة تحكم وجهات النظر.
هدفي هو أن تحكم عرض:
- تحديث العرض فقط عندما يتم الضغط على وحدة تحكم الملاحة المكدس
- النشرات البيانات عندما برزت من وحدة تحكم الملاحة المكدس
- إعادة استخدام وحدة تحكم قدر الإمكان (للقضاء على xib ملفات التحميل/التفريغ النفقات العامة)
هل هناك أي مندوب طرق viewWillBePushed:
و viewWillBePopped:
?
على سبيل المثال
دعونا نقول لدي ثلاث طبقات من آراء:
Movies (MovieListController)
--> Movie Basic Info (MovieInfoController)
--> Movie Credits (MovieCreditsController)
نفترض لدينا فئة Movie
لتمثيل كل فيلم.
هنا أريد فقط ثلاثة UIViewController
s واحدة كل في وقت تشغيل البرنامج.لذا يمكن إعادة استخدام نفس MovieInfoController
لمختلف الأفلام بالمثل MovieCreditsController
.
ومع ذلك, وأود أيضا MovieInfoController
فقط تحديث رأيه المجالات (على سبيل المثالالعنوان, تاريخ الإصدار, إلخ) إلا عندما يتم الضغط على المكدس.تنفيذ عرض في viewWillAppear
سوف يجبرها على تحديث الحقول حتى عندما MovieCreditsController
وبرزت.
كما أريد MovieInfoController
الإفراج عن الإشارة إلى Movie
, عندما برزت و يحتمل أي كائن كبير (مثلا ، صورة الغلاف).تنفيذ هذا المنطق في viewWillDisappear
سوف يؤدي إلى الإفراج عن البيانات عندما يتم دفع MovieCreditsController
على المكدس.
هل هناك معقول ؟ أنا ذاهب عن ذلك بطريقة خاطئة ؟
المحلول
انت 90% هناك لأنك خلقت كائن الفيلم.MovieListController يجب أن تملك واحدة MovieInfoController.ينبغي أن استدعاء -setMovie:
قبل أن تضغط على وحدة تحكم الملاحة.الدعوة إلى -setMovie:
يجب أن يكون ما التحديثات الحقول الخاصة بك.
وبالمثل ، MovieInfoController يجب أن تملك واحدة MovieCreditsController ، يجب استدعاء -setMovie:
قبل أن تضغط على nav تحكم.
في MovieListController و MovieInfoController ، يمكنك الاتصال [subController setMovie:nil]
في -viewDidAppear:
لتحرير الذاكرة.