سؤال

كيف يمكنني إعداد تحكم عرض لتحديث الحقول في طريقة العرض فقط يتم الضغط على الملاحة تحكم والنشرات الكائنات عندما برزت من الملاحة تحكم وجهات النظر.

هدفي هو أن تحكم عرض:

  1. تحديث العرض فقط عندما يتم الضغط على وحدة تحكم الملاحة المكدس
  2. النشرات البيانات عندما برزت من وحدة تحكم الملاحة المكدس
  3. إعادة استخدام وحدة تحكم قدر الإمكان (للقضاء على xib ملفات التحميل/التفريغ النفقات العامة)

هل هناك أي مندوب طرق viewWillBePushed: و viewWillBePopped:?

على سبيل المثال

دعونا نقول لدي ثلاث طبقات من آراء:

Movies (MovieListController)
   --> Movie Basic Info (MovieInfoController)
        --> Movie Credits (MovieCreditsController)

نفترض لدينا فئة Movie لتمثيل كل فيلم.

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

ومع ذلك, وأود أيضا MovieInfoController فقط تحديث رأيه المجالات (على سبيل المثالالعنوان, تاريخ الإصدار, إلخ) إلا عندما يتم الضغط على المكدس.تنفيذ عرض في viewWillAppear سوف يجبرها على تحديث الحقول حتى عندما MovieCreditsController وبرزت.

كما أريد MovieInfoController الإفراج عن الإشارة إلى Movie, عندما برزت و يحتمل أي كائن كبير (مثلا ، صورة الغلاف).تنفيذ هذا المنطق في viewWillDisappear سوف يؤدي إلى الإفراج عن البيانات عندما يتم دفع MovieCreditsController على المكدس.

هل هناك معقول ؟ أنا ذاهب عن ذلك بطريقة خاطئة ؟

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

المحلول

انت 90% هناك لأنك خلقت كائن الفيلم.MovieListController يجب أن تملك واحدة MovieInfoController.ينبغي أن استدعاء -setMovie: قبل أن تضغط على وحدة تحكم الملاحة.الدعوة إلى -setMovie: يجب أن يكون ما التحديثات الحقول الخاصة بك.

وبالمثل ، MovieInfoController يجب أن تملك واحدة MovieCreditsController ، يجب استدعاء -setMovie: قبل أن تضغط على nav تحكم.

في MovieListController و MovieInfoController ، يمكنك الاتصال [subController setMovie:nil] في -viewDidAppear: لتحرير الذاكرة.

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