وحدات التحكم في الملاحة iPhone - أفضل الممارسات لإعادة استخدام المشاهدات

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

سؤال

مرحبًا ، أستخدم أجهزة التحكم في التنقل كثيرًا في تطبيقي ، لكن تطبيقاتي بدأت تعاني من وجهات نظر تدعو نفس المشاهدات مرارًا وتكرارًا ودفعها على مكدس وحدة التحكم في NAV بدلاً من إعادة استخدام المشاهدات الموجودة على المكدس.

على سبيل المثال ، لدي طريقة عرض خريطة تسمى في أماكن مختلفة في تطبيقي.

يجب أن أذهب حقًا إلى مكدس وحدة تحكم NAV وأجد MapView التي دفعتها بالفعل ونقلها إلى أعلى المكدس.

بدلاً من ذلك ، أقوم بإنشاء واحدة جديدة وأدفعها في الأعلى.

نظرًا لأن تطبيقي يصبح أكثر تعقيدًا ، فأنا متأكد من أن مشكلات الذاكرة سيحصلون على مشكلات في الذاكرة وسوف يشعر المستخدمون بالملل لضرب زر العودة للوصول إلى القائمة الرئيسية.

حصل أي شخص على مثال جيد على العثور على عرض في مكدس وحدة تحكم NAV.

كيف أفعل ذلك؟

هل أحتاج إلى الاحتفاظ بمؤشر إلى عرض الخريطة الخاص بي في مندوب التطبيق؟

إذا كان هناك طريقة للعثور على عرض بسرعة في المكدس أو هل أحتاج إلى الاحتفاظ بمؤشر/nsdictionary إلى موقعها في مكان ما.

لقد لاحظت أن كل من يكتب تطبيق Facebook لديه الآن نفس المشكلة. عندما تأتي الإخطارات ، تفتح التطبيق وتثبيت عرض الإخطار ودفعه على المكدس. بعد فترة من الوقت ينتهي بك الأمر إلى إغلاق كومة كاملة من نوافذ الإخطار القديمة للعودة إلى القائمة الرئيسية. في صحتك

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

المحلول

إذا كنت تريد ViewController معين في الجزء العلوي من المكدس ، والتي دفعتها بالفعل على المكدس ، بدلاً من إنشاء واحدة ، يمكنك استخدام الطريقة التالية.

- (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated

إذا كنت تعرف مسبقًا ، فسيتم دفع ViewControllers على المكدس ، فيمكنك دفعها مرة واحدة مع الوظيفة أدناه ، بدلاً من دفعها مرارًا وتكرارًا.

- (void)setViewControllers:(NSArray *)viewControllers animated:(BOOL)animated
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top