كيفية إنشاء حلقات لا نهائية في وحدة التحكم في التنقل مثل تطبيق instagram في iPhone؟

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

سؤال

أقوم بتطوير تطبيق يحتوي على العديد من العروض الفرعية مثل تدفق instagram و picyou نوع تطبيقات الشبكات الاجتماعية، التدفق هو صورة->صورة تفصيلية->أي تعليق->اسم مستخدم->متابعة->اسم مستخدم->اسم مستخدم الصورة->صورة->صورة تفصيلية->أي تعليق->اسم مستخدم->متابعة->اسم مستخدم ->اسم مستخدم الصورة->اللعنة، هذا لا نهائي ولا يتوقف أبدًا.....

ولا يحصل أبدًا على تحذير بشأن الذاكرة أو يتعطل بسبب مشكلة في الذاكرة...

أنا أستخدم وحدة التحكم في التنقل ولكن بعد مرور بعض الوقت من التنقل، أقوم بتغيير بعض وحدات التحكم في العرض، مما يعطيني خطأ مثل هذا *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Pushing the same view controller instance more than once is not supported (<ViewController: 0x6d97110>)'

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

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

المحلول

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

ViewController *vc = [[ViewController alloc] init];
//customize ViewController
[self.navigationController pushViewController:vc animated:YES];

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

لقد وجدت أيضًا أنه من الأفضل إنشاء مُهيئ مخصص لهذه الأنواع من وحدات التحكم في العرض.للحصول على عرض تفصيلي للصورة، استخدم شيئًا مثل.

-(id)initWithPhoto:(Photo*)photo;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top