سؤال

أنا أعمل في Xcode على تطبيق iPod في الهدف C ، ولدي حقل (NavigationController) في أحد فئتي (RootViewController). كيف يمكنني الرجوع إلى شركة NavigationController الخاصة بـ RootViewController من فئة أخرى؟ على سبيل المثال ، كيف يمكنني القيام بذلك إذا أردت الرجوع إلى NavigationController من فئة FirstViewController.m؟

يبدو أنني فقط قادر على العثور على مراجع لهذا للرجوع إلى مندوب التطبيق.

إذا أردت الرجوع إلى مندوب التطبيق باستخدام FirstViewController ، فأنا أقول فقط:

MyAppDelegate *delegate = [[UIApplication sharedApplication] delegate];

[delegate.navigationController pushViewController:childController animated:YES];

كيف أفعل هذا لفئة RootViewController بدلاً من MyAppDelegate؟

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

المحلول

استنادًا إلى السؤال الذي تطرحه ، يبدو أنك ترغب في استدعاء أساليب على UinavigationController أعلى في المكدس. جميع uiviewControllers لديها بالفعل خاصية لـ NavigationController وهي uinavigationController التي تعد سلفًا لهذا ViewController على المكدس.

لذلك إذا كان لديك RootViewController ، يسمى Root ، في مرحلة ما فعل هذا

FirstViewController * first = [[FirstViewController alloc] initWithNibName:@"FirstView" bundle:nil];
[self.navigationController pushViewController:first animated:YES];
[first release];

ثم first.navigationController == root.navigationController

لذلك داخل الاتصال الأول [self navigationController]سوف يعطيك نفس NavigationController الذي تم دفعه أولاً في المقام الأول.

نصائح أخرى

كائن واحد يحتاج إلى إشارة إلى الآخر. هناك العديد من الطرق لتحقيق ذلك. علي سبيل المثال:

  • اجعل نفس الكائن ينشئ كلاهما ، وبما أنه يعرفهما كلاهما ، أخبرهم عن بعضهم البعض
  • قم بإنشائها في نفس المنقار وربطها بالاتصالات العادية
  • اطلب من مالك NIB أحد الكائنات يعرف عن الآخر

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

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