سؤال

لدي موضوع عرض التطبيق مع الفرد UIViewControllers و xibs.لدي رأي واحد وهذا هو لعبة عرض وفي كل مرة أسميه أنا أريد أن إعادة تهيئة ، أعني إعادة تشغيل كما هو في الشرط الأولي وليس في الدولة لقد تركت الماضي في.

هنا هو رمز كتلة أنا باستخدام لتحميل وإزالة المشاهدات:

-(void)loadStartViewController {
[currentView.view removeFromSuperview];
StartViewController *startViewController = [[StartViewController alloc] initWithNibName:@"StartView" bundle:nil];
[window addSubview:startViewController.view];
currentView = startViewController;

}

يجب أن أكون واضحا هنا.لدي UIViewController و xib التي تشكل الرأي في حين يتم يتم لعب اللعبة.يسمونه الأسلوب في UIView إلى برمجيا لفت نظر.أترك UIViewController عندما تنتهي اللعبة و اذهب إلى درجة الشاشة.أريد أن يكون المستخدم إعادة تشغيل والعودة إلى اللعبة ، أي تحميل UIViewController مع رمز أعلاه ولكن مع بدء لعبة جديدة ، جميع الإعدادات في طريقة تسمى.أنا فقط يمكن تعيين متغير وتمريرها بين UIViewControllers ولكن أنا على الرغم من أنه قد يكون هناك أمر من شأنه أن يسمح لي أن إعادة اللعبة UIViewController لذلك لا تذكر أي شيء عن الدولة في نهاية المباراة الأخيرة.

أن تجعل من العمل كتبت في طريقة تعيين جميع المتغيرات في UIView التي توجه شاشة اللعبة و استدعاء هذا الأسلوب من UIViewController في viewDidLoad القسم.

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

المحلول

أفترض أن العرض هو عرض بعض البيانات المخزنة في نموذج (لعبة الدولة).لذلك لن تحتاج إلى إعادة تعيين اللعبة في الدولة والسماح عرض عرض ذلك ؟ رأي إدارة (تحميل/صدر/reloaded) من قبل النظام عندما يحتاج إلى أن يتم عرض أو صدر عند ذاكرة الهاتف منخفضة.حتى إذا كان يمكنك التعامل مع اللعبة دولة على حدة يجب تحديث اللعبة دولة (نموذج) والسماح عرض عرض عليه.

ماذا تعني بلدي "، داعيا فيو" ؟ هل يعني عندما تذهب من 'القائمة' إلى 'لعبة الشاشة'?

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

لست متأكدا إذا كان هذا يساعد, أنا لست متأكدا تماما ما قصدته بلدي 'استدعاء'عرض.

نصائح أخرى

وبدلا من تتبع التي يتم عرضها عرض حاليا، استخدم UINavigationController. هذا ما كنت ل. في applicationDidFinishLaunching في تفويض تطبيقك:

UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:startViewController];

إنشاء متغير مثيل في startViewController وتمريرها مؤشر إلى وحدة تحكم الملاحة بعد إنشائه. ثم عندما تريد أن تذهب إلى لعبة:

[self.navigationController pushViewController:gameViewController animated:YES];

وأم لا الرسوم المتحركة، أيا كان. عليك ربما أيضا تريد إخفاء شريط التنقل مع:

[self.navigationController setNavigationBarHidden:YES animated:NO];

وعندما تنتهي اللعبة، يمكنك الاستمرار في دفع كل ما وجهات النظر التي تريدها، ويمكنك دائما العودة إلى وجهة النظر الأولى مع:

[self.navigationController popToRootViewControllerAnimated:YES];

وأوه، وأما إعادة تهيئة كل مرة كنت تلعب لعبة، مجرد تنفيذ

-(void)viewWillAppear:(BOOL)animated{}

في وحدة تحكم لعبة عرض والقيام بكل ما التهيئة التي تريدها. على الرغم بصراحة أنا لست متأكدا 100٪ يجب استخدام هذا مع .xib ... أنا نادرا ما تستخدم واجهة البناء لذلك أنا لست متأكدا. ولكن اعتقد انها ستعمل.

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