واجهة البناء. كيف يمكنني استبدال البرنامجية مشاهدة تحكم مع ViewControllers IB؟

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

سؤال

وكما نقل المزيد والمزيد من البناء UI بلدي من كسكودي إلى IB هناك واحد تبقى عقبة أنا بحاجة لمسح.

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

هل يمكن لشخص شرح بعناية لي - أو أفضل، وأشر لي إلى رمز - كيفية تكرار النهج كسكودي تمرير بارامس عبر مهيئ مخصصة في IB - يفترض عبر IBOutlet

وشكرا مقدما.

وابتهاج، دوغ

وUPDATE:

وA scenerio النموذجي هو وجهتي AppDelegate الخروج إلى الشبكة، والاستيلاء على بعض البيانات - NSMutableData، ومن ثم تمرير إشارة إلى viewController الجذرية - عادة TableViewController - أن يتم الضغط على المكدس viewController من navigationController

وعندما يتم تحديد خلية وsecondViewController والوك / init'ed ويتم تمرير مجموعة فرعية من البيانات إليها. وsecondViewController يذهب إلى الشبكة للحصول على مزيد من البيانات قليلا، ويبني التسلسل الهرمي الرأي واليدين بت من البيانات التي تم استردادها إلى كل subview ومن ثم يتم بعث برسالة كل subview مع setNeedsDisplay لمعالجة البيانات.

وهذا هو تمرير البيانات الهرمية التي أريد أن نسلمها إلى IB ممكن.

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

المحلول

ويمكنك لا تزال لديها مهيئ المخصصة. ومع ذلك، داخل هذا تهيئة عليك الاتصال -[initWithNibName:@"yourNibName" bundle:bundle]. سوف تقوم بتوصيل المتعلقة UIKit المتغيرات مثيل (UILabel، UIButton، الخ) في واجهة البناء، وبالتالي لن يكون لهذه الكائنات مثيل في مهيئ الخاص بك. المتغيرات الأخرى المثيل (سلاسل والقواميس، والأشياء المخصصة، الخ) عليك مثيل وتدور أحداثه في مهيئ الخاص بك.

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

واسمحوا لي أن أعرف إذا كنت بحاجة إلى مزيد من المعلومات.

نصائح أخرى

ودعونا نقول لدينا MyViewController التي تمتد UIViewController وMyViewControllerParameter التي تعد واحدة من الأشياء عادتنا نحن نمر في MyViewController على التهيئة. MyViewController له IBOutlets من نوع MyViewControllerParameter المحددة في ذلك. نحن نريد ان نضع MyViewController إلى آخر نظرا تحتوي على، ParentView.xib. وهي مملوكة من قبل ParentView.xib ParentViewController.m وخلق أماكن أخرى. نحن انقر مرتين ParentView.xib في كسكودي لإطلاق واجهة البناء. نحن بعد ذلك سحب "وجوه" من عرض مكتبة (أعتقد أنك فتح عرض مكتبة مع كمد + شيفت + L إذا لم تكن مفتوحة افتراضيا) على النافذة Document. (وهذا هو الإطار تفعيلها من خلال كمد + 0).

وهناك "كائن" هو القطعة التعسفية وجدت في المكتبة (التي تم تحديدها من قبل رمز الذهب مكعب الصلبة) التي يمكن أن تمثل أي شيء في المشروع. بعد أن قد وضعت الكائن الجديد في إطار المستند، فإننا اكتب cmd + 4 لفتح المفتش النافذة Indentity. في حقل النص كبار يمكننا اكتب اسم لدينا معلمة رأي تحكم "MyViewControllerParameter". نحن المقبل العثور على القطعة ViewController في المكتبة وإسقاطها في نافذة الوثيقة. نفتح مفتش سمة (كمد + 1) وتعيين اسم بنك الاستثمار القومي إلى "MyView.xib". هذا يجب أن يسبب CocoaTouch لتحميل MyViewController باستخدام التعاريف الواردة في "MyView.xib".

وفتح مفتش الهوية وتعيين سمة فئة لMyViewController. آخر ما فوق الحق أو السيطرة فوق (أو اثنين إصبع الصنبور إذا قمنا تكوينها بشكل صحيح لوحة التتبع على موقعنا MacbookPro) MyViewController في نافذة الوثيقة. سوف تفتح نافذة عرض جميع IBOutlets في MyViewController. اسحب خط من دائرة مفتوحة قليلا بجوار منفذ MyViewControllerParameter وأسقطه على الكائن MyViewControllerParameter يجلس في نافذة الوثيقة. ربط هذه النقاط هي الطريقة التي قمت بتعيين معلمات بين الكائنات باستخدام واجهة البناء.

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