UiviewController Custom TitleView App App
-
25-09-2019 - |
سؤال
لدي تطبيق iPhone قائم على التنقل. عندما تضغط على خلية في Tableview ، يتم دفع UiviewController جديد إلى مكدس التنقل. في وحدة التحكم في العرض هذه ، أقوم بإعداد عرض مخصص في طريقة ViewDiddload:
- (void)viewDidLoad {
[super viewDidLoad];
// Setup custom navigation title
[self setTitle:@"Mediaportal"];
navItem = [[NavigationBarTitleItemViewController alloc] initWithNibName:@"NavigationBarTitleItem" bundle:nil];
[navItem setTitle:[theServer name]];
[navItem setSubTitle:@""];
[self.navigationItem setTitleView:navItem.view];
…
}
بمجرد أن أعود إلى RootViewController:
[self.navigationController popToRootViewControllerAnimated:YES];
يتعطل التطبيق مع الخطأ التالي (nszombieenabled = نعم):
*** -[CALayer retain]: message sent to deallocated instance 0x5a5fd80
من ما أستطيع أن أرى RootViewController لا يزال يحاول الوصول إلى TitleView المخصص ، والذي تم تعامله مع وحدة التحكم في العرض الثاني. بمجرد التعليق على جزء TitleView المخصص في الكود الخاص بي ، يعمل التطبيق. حاولت تعيين cilvigationItem.titleview على NIL (كما هو موضح في مستندات Apple) قبل تخصيص ViewController الثاني ، لكن هذا لا يساعد.
هل لديك تلميح ما يمكنني فعله لمنع هذا الحادث؟
شكرا مارك.
المحلول 2
لقد وجدت أخيرًا الحل له (حل بسيط للغاية). لا بد لي من تخصيص وبدء Navitem من خلال ممتلكاته ثم يتم الاحتفاظ بها:
self.navItem = [[NavigationBarTitleItemViewController alloc] initWithNibName:@"NavigationBarTitleItem" bundle:nil];
نصائح أخرى
كان لدي نفس الخطأ بالضبط منذ شهر أو نحو ذلك ، بالضبط نفس الموقف. لقد دفعني المكسرات.
اكتشفت أن ViewController الذي كنت أظهره أيضًا لم يتم تعامله على الإطلاق. كان لدي فئة فرعية مخصصة لـ Uibutton إضافة إلى هذا الرأي ، لكن تم تعديلها عندما تم دفع العرض الثاني. لذلك عندما ظهرت ، لم يكن Uibultton هناك.
تحقق من العرض الذي تعود إليه ، أو التأكد من عدم حصولك على أي فصول تقوم بتخصيصها ، أو تُصدر تلقائيًا دون أن تعرف ذلك.
أتمنى أن يساعدك هذا.