سؤال

عندما أقوم بإنشاء iboutlet إلى NavigationController الخاص بي ومحاولة إضافته إلى CenterView، لا يظهر أي شيء. من الغريب حقا، عندما قمت بتهيئة Navigntroller الخاص بي في التعليمات البرمجية ثم قم بإضافته إلى العرض الذي يعمل بشكل مثالي.

حتى يعمل حتى عند إجراء واحدة في mainwindows.xib وإضافته إلى طريقة العرض في طريقة ApplicationDIdfinishLaunching.

ولكن بمجرد محاولة تحميلها من ViewController آخر فاشت ولم تركت بشاشة فارغة.

لذلك يعمل عندما أضيفه برمجيا أو إضافته في My MainWindow.xib.

لقد كنت أحاول ساعات للحصول عليها. يبدو بسيطا جدا، لكنني لا أستطيع الحصول عليها للعمل في ملفات XIB الأخرى.

الإعداد الخاص بي:

#import "RootViewController.h"

RootViewController *rootViewController=[[RootViewController alloc] init];
[window addSubview:rootViewController.navController.view];

يحتوي My RootViewController الخاص بي على iboutlet إلى NavigationController.

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

**** التحديث **** يعمل الرمز أعلاه إذا قمت بتغييره إلى: أحتاج إلى التحقق من الجذر المستوردة. عرض خلاف ذلك ولن يعمل لماذا؟

#import "RootViewController.h"

RootViewController *rootViewController=[[RootViewController alloc] init];
if(rootViewController.view){
NSLog(@"nil"); 
}
[window addSubview:rootViewController.navController.view];

شكرا مقدما!

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

المحلول

هذا لأن الوصول إلى view في الواقع يستدعي Getter، مما يخلق عرض وحدة تحكم مكسورة (عند الطلب). ال rootControllerview غير موجود حتى تستدعي لأول مرة view طريقة getter. الطريقة المعتادة لإنشاء عرض التطبيق الأول هو

[window addSubview:someController.view]

ويطرح خلق الرأي.

نصائح أخرى

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

إذا لم يتم توصيل شيء ما، فأنت في نهاية المطاف مع Nil في مأخذ، لذلك Self.rootViewController.navcontroller.View ينتهي كونه [[nil navcontroller] عرض] وهو nil ويحاول إضافة nil كإشارة فرعية أعتقد. يمكنك أن تنتهي بالمثل في التحدث إلى NIL إذا كانت الإطار NIL، ولكن من المحتمل أن تكون جذر توثيق غير متصل.

لدي مشكلة مماثلة في الواقع حتى WeiReDer، عندما تكون وحدة التحكم متصلة فقط في IB، يتم تحميل التطبيق بشكل جيد على جهاز iPad ولكن على iPhone لدي شاشة فارغة ويوضح المصحح أن عرض وحدة التحكم يحتوي على إطار هو 0، 0، 0، 0، قمت بإصلاحها عن طريق إعادة تعيين مأخذ الجذر في التعليمات البرمجية في ApplicationDidFinishLaunching ولكني لا أفهم لماذا هذا لا يعمل

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