פיתוח ב- iPhone (5): היישום הראשון שלנו (III)

En המאמר הקודם שלנו כללנו תווית, TextField וכפתור בממשק היישום שלנו. רצינו שתוכן הלייבל יעודכן במה שהוזן ב- TextField בלחיצה על הכפתור. היינו (שלב 1) יצרנו את הפרויקט, ו (שלב 2) השתמשנו ב- InterfaceBuilder להגדרת המסך. כעת נמשיך בשאר הצעדים להשאיר את היישום עובד.

שלב 3. צור משתנים ב- ViewController.

יש לנו את הממשק שלנו כהלכה. למעשה, אם עשינו Build & Go היינו יכולים לראות איך אנחנו מסתדרים:

אך ברור ששום דבר לא קורה בעת לחיצה על הכפתור, מכיוון שלא ביצענו מינימום התפתחויות חיוניות. בשלב 3 נציג את המשתנים והשיטות במערכת HelloWorldViewController, הן בממשק (קובץ .h) והן ביישום (קובץ .m). לשם כך, כפי שציינו בסוף ההודעה הקודמת, עלינו לדעת כי TextField תואם למחלקה UITextField, ואת התווית למחלקה UILabel. 2 השיעורים הללו נמצאים במסגרת UIKit.

אם לא סגרנו ושמרנו את בונה הממשקים, אנו עושים זאת וב- XCode אנו פותחים את הקובץ HelloWorldViewController.h. לקוד כרגע יהיה משהו כזה:

אנחנו כבר מסתכלים על איזה Objective-C. בקוד זה אנו רואים הצהרת ייבוא ​​של ספריית UIKit, בה נמצאים המחלקות UILabel ו- UITextField. אנו רואים כיצד ממשק מוכרז, וכי הוא נמשך מה- UIViewController הגנרי של UIKit.

בתוך קוד הממשק אנו כוללים את הקוד הבא:

כעת אנו יכולים להסביר מה עשינו:

  • הכרזנו במאפייני @interface block 2 על סוג UILabel ו- UITextField, עם שני שמות משתנים * תווית ו- * textField בהתאמה. לפני כן מופיע IBOutlet. מה כל זה? אנחנו מסבירים את עצמנו. IBOutlet אינו סוג של משתנה; היא הנחיה המסייעת ל- Interface Builder לדעת את קיומם של משתנים אלה מסוג 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, לוחצים על תיבת הטקסט, ובחלונית המפקח אנו עוברים לכרטיסייה השנייה (חיבורי שדה טקסט). אנו רואים שיש קטע שנקרא הפניות לשקעים, מבלי שיש שום דבר מסומן. המשמעות היא שכרגע ממשק בונה אינו יודע שום קשר בין שדה טקסט זה ל- IBOutlet (Outlet Builder Outlet) של מחלקה ... אבל יש לנו UITextField IBOutlet ב- HelloWorldViewController שלנו, ולכן אנו הולכים לקשר אותו.

לשם כך, כפי שאנו רואים באיור, על ידי לחיצה על העיגול הקטן שליד «שקע הפניה חדש», אנו גוררים אל בעל הקובץ של החלון הנקרא HelloWorldViewController.xib. זה יאפשר לנו לבחור שתי אפשרויות, להציג (את התצוגה המלאה) ו- textField (המשתנה שלנו). ברור שאנו בוחרים ב- textField, וכך אנו מתייחסים לתיבת הטקסט שלנו למשתנה מסוגו UITextField. אגב, הבעלים של הקובץ או הבעלים של הקובץ הם לא יותר ולא פחות ממעמד הבקר שלנו ...

אנו חוזרים על הפעולה עם התווית, ומתייחסים אליה לתווית המשתנה של הבקר שלנו. ועם הכפתור, זה משהו אחר. במקרה זה אנו מתכוונים להתייחס אליו לפעולה updateTexto שלנו, אך לאירוע ספציפי. עשו זאת באירוע 'Touch Up Inside' ובחרו בשיטת updateTexto שלנו:

ובדרך זו כבר קשרנו את הפקדים שהגדרנו עם Interface Builder ואת המשתנים שהכנסנו לבקר. אנו סוגרים את בונה הממשקים ושומר הכל ונלך לשלב האחרון בחזרה ל- XCode.

שלב 5. ההתפתחויות האחרונות.

ב- XCode אנו פותחים את HelloWorldViewController.my ושמנו את הקוד הבא כך שהכיתה שלנו תיראה כך:

אם נסתכל מקרוב פשוט שמנו את החסימה @synthesize, ואת יישום השיטה המוצהרת בממשק .h, updateTexto. מתחת לקוד הזה יהיה לך הרבה קוד מגיב.

הקו @synthesize עושה משהו דומה ליצירת הגטר / מגדיר האופייני (אקססור / מוטציה) האופייני לשפות OO (אנקפסולציה). אנו זקוקים להם כדי שהבקר יגיע לתוכן, למשל, של תיבת הטקסט.

שיטת updateTexto, כפי שאתה יכול לראות, פשוט מעדכנת את הטקסט של התווית שלנו בתוכן של שדה הטקסט. אנחנו גמרנו.

עכשיו, אנחנו פשוט עושים Build & Go, ותראה שכאשר אתה מזין מחרוזת טקסט ולחץ על הכפתור, תוכן התווית מעודכן. במאמר הבא נציג שיפורים ביישום שלנו.


עקוב אחרינו בחדשות Google

4 תגובות, השאר את שלך

השאירו את התגובה שלכם

כתובת הדוא"ל שלך לא תפורסם. שדות חובה מסומנים *

*

*

  1. אחראי על הנתונים: AB Internet Networks 2008 SL
  2. מטרת הנתונים: בקרת ספאם, ניהול תגובות.
  3. לגיטימציה: הסכמתך
  4. מסירת הנתונים: הנתונים לא יועברו לצדדים שלישיים אלא בהתחייבות חוקית.
  5. אחסון נתונים: מסד נתונים המתארח על ידי Occentus Networks (EU)
  6. זכויות: בכל עת תוכל להגביל, לשחזר ולמחוק את המידע שלך.

  1.   פדרו דיג'ו

    הדרכה טובה מאוד, מאוד ברורה ופשוטה.

  2.   rubdotto.com דיג'ו

    ובכן, אני חייב להיות מלון מאוד 🙁 כי זה לא עובד בשבילי. קלטתי את הערך במחרוזת וזה לוקח את הטקסט, אבל הוא לא מקצה אותו לתווית, לפחות לא מצייר אותו, כי אני מנסה לראות את label.text וזה אומר לי מחוץ לתחום ...

  3.   leo2279 דיג'ו

    מעולה ההדרכות שלך, זה באמת מסביר טוב מאוד את ההתפתחות הזו לאייפון, אני מקווה שתמשיך לפרסם עוד מדריכים.

    דרישת שלום

  4.   מריאנו דיג'ו

    היי, הכל מגניב, אבל זה לא עובד. כדי שזה יעבוד הייתי צריך לקשר בין התצוגה של בונה הממשקים לבין התצוגה בקוביה, כפי שאתה מלמד לעשות עם שדה הטקסט והתווית. לכל השאר תודה רבה.