التطوير على iPhone (5): تطبيقنا الأول (III)

En مقالتنا السابقة لقد قمنا بتضمين Label و TextField و Button في واجهة تطبيقنا. أردنا تحديث محتوى الملصق بما تم إدخاله في TextField عند النقر فوق الزر. لقد أنشأنا (الخطوة 1) المشروع ، و (الخطوة 2) استخدمنا InterfaceBuilder لتعريف الشاشة. سنواصل الآن بقية الخطوات لترك التطبيق يعمل.

الخطوة 3. قم بإنشاء متغيرات في ViewController.

لدينا واجهتنا بشكل صحيح. في الواقع ، إذا فعلنا Build & Go يمكننا أن نرى كيف نفعل:

لكن من الواضح أنه لا شيء يحدث عند الضغط على الزر ، لأننا لم نقم بالحد الأدنى من التطورات الأساسية. في هذه الخطوة 3 سنقدم المتغيرات والطرق في HelloWorldViewController ، في كل من الواجهة (ملف .h) والتنفيذ (ملف .m). للقيام بذلك ، كما أشرنا في نهاية المنشور السابق ، يجب أن نعرف أن TextField يتوافق مع فئة UITextField ، وأن التسمية مع فئة UILabel. هاتان الفئتان تقعان ضمن إطار عمل UIKit.

إذا لم نقم بإغلاق أداة إنشاء الواجهة وحفظها ، فسنقوم بذلك وفي XCode نفتح الملف HelloWorldViewController.h. سيحتوي الرمز الآن على شيء مثل هذا:

نحن نبحث بالفعل في بعض Objective-C. في هذا الكود ، نرى إعلان استيراد لمكتبة UIKit ، حيث توجد فصول UILabel و UITextField. نرى كيف يتم الإعلان عن الواجهة ، وأنها تمتد من UIViewController العام لـ UIKit.

في كود الواجهة نقوم بتضمين الكود التالي:

يمكننا الآن شرح ما قمنا به:

  • لقد أعلنا داخل سماتinterface block 2 من النوع UILabel و UITextField ، مع اسمين متغيرين * تسمية و * حقل نصي على التوالي. أمامك يظهر IBOutlet. ما كل هذا؟ نفسر أنفسنا. IBOutlet ليس نوعًا من المتغيرات ؛ هو توجيه يساعد منشئ الواجهة على معرفة وجود هذه المتغيرات من النوع UILabel و UITextField. بالمناسبة ، تذكر أنه في المقالة السابقة قدمنا ​​لك خدعة لمعرفة الأنواع المتغيرة لكائنات التحكم (الأزرار ، التسمية ، حقل النص ، إلخ) في Interface Builder. من ناحية أخرى ، قد تفاجئ مشكلة * أمام اسم المتغير مبرمجي Java ، ليس كثيرًا من C ... لكن تعلم أن هذه هي الطريقة التي ستكتب بها متغيرات المثيل في Objective-C.
  • تم التصريح عن خصائص UILabel و UITextField. غير الذرية والاحتفاظ بها لن نراها في الوقت الحالي ، فهي مرتبطة بإدارة الذاكرة.
  • نرى أننا نعلن عن طريقة updateText. يوجد أمامها علامة - تشير إلى أنها طريقة مثيل وليست طريقة فئة (تم شرح علامة + لهم). لا يمكننا الخوض في شرح هذا لأن هذه هي البرمجة الأساسية الموجهة للكائنات ... هذه الطريقة لا تُرجع أي شيء (أي ، باطل) وتتلقى معلمة من النوع id. يشير بشكل أساسي إلى معرف الكائن الذي سيؤدي إلى استدعاء طريقة updateTexto الخاصة بنا ، والتي ستحدث قيمة الملصق. يمكننا التخمين لأن هذا التحكم سيكون الزر نفسه ...

بمجرد الانتهاء من ذلك ، ننتهي من الخطوة 3.


الخطوة 4. ربط عناصر التحكم في العرض بمتغيرات وحدة التحكم.

إذا قمنا بالمراجعة ، فمن ناحية ، قمنا بتطوير واجهتنا مع Interface Builder ، ومن ناحية أخرى لدينا المتغيرات المتعلقة بهذه الضوابط في HelloWorldViewController.h (واجهة فئة وحدة التحكم HelloWorldViewController.m). ومع ذلك ، لا توجد حتى الآن علاقة بين العرض ووحدة التحكم ، أي أننا لم نعط أي تعليمات لربط ، على سبيل المثال ، حقل النص الذي نصممه في Interface Builder مع متغير النوع UITextField الذي وضعناه في فئة. الآن سنقوم بهذه المهمة. نفتح Interface Builder مرة أخرى بالنقر فوق HelloWorldViewController.xib ، وانقر فوق مربع النص ، وفي لوحة المفتش ننتقل إلى علامة التبويب الثانية (اتصالات حقل النص). نرى أن هناك قسمًا يسمى منافذ الإشارة ، دون وضع علامة على أي شيء. هذا يعني أنه في الوقت الحالي لا يعرف Interface Builder أي علاقة بين حقل النص هذا و IBOutlet (Interface Builder Outlet) للفصل ... ولكن لدينا UITextField IBOutlet في HelloWorldViewController ، لذلك سنقوم بربطه.

للقيام بذلك ، كما نرى في الشكل ، من خلال النقر على الدائرة الصغيرة بجوار "منفذ مرجعي جديد" ، نسحب إلى مالك الملف للنافذة المسماة HelloWorldViewController.xib. سيتيح لنا اختيار خيارين ، عرض (العرض الكامل) وحقل النص (متغيرنا). من الواضح أننا نختار textField ، وبالتالي نربط مربع النص الخاص بنا بالمتغير من نوعه UITextField. بالمناسبة ، مالك الملف أو مالك الملف ليس أكثر أو أقل من فئة وحدة التحكم الخاصة بنا ...

نكرر العملية مع الملصق ، وربطها بتسمية متغير وحدة التحكم الخاصة بنا. وباستخدام الزر ، يكون الأمر مختلفًا. في هذه الحالة ، سنقوم بربطها بعملية updateTexto الخاصة بنا ، ولكن لحدث معين. افعل ذلك مع حدث "Touch Up Inside" ، واختر طريقة updateTexto الخاصة بنا:

وبهذه الطريقة ، قمنا بالفعل بربط عناصر التحكم التي حددناها باستخدام Interface Builder والمتغيرات التي وضعناها في وحدة التحكم. نغلق Interface Builder ونحفظ كل شيء وننتقل إلى الخطوة الأخيرة بالعودة إلى XCode.

الخطوة 5. آخر التطورات.

في XCode ، نفتح HelloWorldViewController.my ونضع الكود التالي بحيث يبدو الفصل الخاص بنا كما يلي:

إذا نظرنا عن كثب ، فقد وضعنا ببساطة blocksynthesize ، وتنفيذ الطريقة المعلنة في الواجهة .h ، updateTexto. أسفل هذا الرمز ، سيكون لديك الكثير من التعليمات البرمجية المعلقة.

يقوم خطsynthesize بعمل شيء مشابه لتوليد أداة التقاط / أداة ضبط نموذجية (موصّل / متحولات) نموذجية بلغات OO (تغليف). نحتاجها حتى تصل وحدة التحكم إلى محتوى مربع النص ، على سبيل المثال.

طريقة updateTexto ، كما ترى ، تقوم ببساطة بتحديث نص الملصق الخاص بنا بمحتوى حقل النص. لقد إنتهينا.

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


تابعونا على أخبار جوجل

اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: AB Internet Networks 2008 SL
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.

  1.   بيدرو قال

    تعليمي جيد جدا ، واضح جدا وبسيط.

  2.   rubdotto.com قال

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

  3.   leo2279 قال

    ممتاز البرامج التعليمية الخاصة بك ، إنه يشرح جيدًا هذا التطوير لـ iphone ، وآمل أن تستمر في نشر المزيد من البرامج التعليمية.

    تحياتي

  4.   Mariano قال

    مرحبًا ، كل شيء رائع ، لكنه لا يعمل. لإنجاحه ، كان عليّ ربط عرض منشئ الواجهة بالمنظر الموجود في المكعب ، كما تعلم كيفية عمل حقل النص والتسمية. بالنسبة للباقي ، شكرا جزيلا لك.