PracticU

הצגת מפה והצגת מיקום המשתמש

בלי כתוביותעם כתוביות
PracticU › קורס פיתוח אפליקציות - לאייפון iPhone iOS - ב-Swift-Xcode › הצגת מפה והצגת מיקום המשתמש
מילון מושגים:
iOS - מערכת ההפעלה של אפל למכשירי iPhone ו-iPad.
JSON - פורמט טקסט קריא לייצוג נתונים מובְנים כזוגות מפתח-ערך, נפוץ להחלפת מידע בין שרת ללקוח.
View - רכיב שאחראי על הצגת המידע למשתמש (התצוגה) בדפוס MVC. גם טבלה וירטואלית מבוססת שאילתה במסד נתונים.
Xcode - סביבת הפיתוח של אפל לכתיבת אפליקציות ל-iOS ול-macOS.
הרשאה - קביעה אילו פעולות ומשאבים מותרים למשתמש או לתהליך לאחר שזהותו אומתה. שולטת במי רשאי לעשות מה.
Singleton - דפוס עיצוב שמבטיח שממחלקה מסוימת יהיה מופע אחד בלבד, עם נקודת גישה גלובלית אליו.
דיבאג - תהליך של איתור, הבנה ותיקון תקלות בקוד, לעיתים בעזרת כלי שמאפשר לעצור ולעקוב אחר ריצת התוכנית.
מודל - רכיב שמייצג את הנתונים ואת הלוגיקה העסקית באפליקציה. גם ייצוג מופשט של מערכת או תהליך.

הצגת מפה והצגת מיקום המשתמש
בשיעור בונים מאפס אפליקציית iOS שמציגה מפה, מבקשת רשות למיקום המשתמש, ומציגה על המפה נקודות עניין שנטענות מקובץ JSON.
השלבים העיקריים
1. הקמת הפרויקט: פרויקט מסוג Tabbed Application בשם Locations Project. מוחקים את ה-View Controllers ואת התמונות שנוצרו אוטומטית, יוצרים MapsViewController בקבוצה Controllers ומשייכים אותו ב-Storyboard. ב-Signing & Capabilities מוסיפים את היכולת Maps.
2. המפה: מוסיפים Map View שתופס את כל המסך עם אילוצים של 0 ביחס ל-view (לא ל-safe area), ועוטפים את המסך ב-Navigation Controller. ב-Xcode הנוכחי צריך לפעמים להגדיר ידנית את הקבוע 0 באילוץ.
3. סוג המפה: UISegmentedControl עם שלושה סגמנטים בסרגל העליון: Standard, Satellite ו-Hybrid. הפעולה בודקת את selectedSegmentIndex ב-switch ומציבה את mapType של ה-MapView.
4. בקשת הרשאה: ב-Info.plist מוסיפים מפתח מסוג Privacy עם טקסט שמוצג למשתמש, ובו הסבר למה האפליקציה צריכה את המיקום.
5. LocationManager: מחלקת Singleton בקובץ נפרד עם static let shared, שיורשת מ-NSObject, שומרת CLLocationManager פרטי ומשמשת לו כ-delegate. ב-didChangeAuthorization בודקים את הסטטוס: always או when in use פירושו שיש רשות, not determined פירושו שמבקשים אותה, denied פירושו שמדפיסים הודעה (אפשר גם לשלוח את המשתמש להגדרות).
6. תכונות מחושבות: isAuthorized מחזיר את תוצאת התנאי ישירות, ו-location מחזיר את המיקום האחרון הידוע, אופציונלי.
7. הצגת המשתמש: אם יש רשות מציבים showsUserLocation = true.
8. סימולציה של מיקום: בסימולטור אין מיקום כברירת מחדל. אפשר להגדיר Custom Location בתפריט Debug או ליצור קובץ GPX חדש עם waypoints, כל אחד עם קו רוחב, קו אורך וזמן בסדר עולה. בדוגמה נלקחו קואורדינטות מ-Google Maps לחוף דור ולשמורת חוף הבונים, והבחירה בקובץ ב-Debug מדמה ריצה ביניהן. בטלפון אמיתי אין צורך בכך.
9. Notification Center: מוסיפים extension ל-Notification.Name עם שם חדש, ובעת קבלת הרשות שולחים אותו עם post. ב-MapsViewController נרשמים עם addObserver על ה-main queue, עם weak self, ומציבים שם showsUserLocation. כך המיקום מופיע מיד אחרי שהמשתמש מאשר.
10. מודל Landmark: מייבאים את הקובץ camp JSON לפרויקט (Copy items if needed וסימון ה-Target). מגדירים struct שמממש Codable עם השדות של הקובץ, ו-static func load שקוראת את הקובץ מה-Bundle ומפענחת אותו עם JSONDecoder למערך. בכל כשל מחזירים מערך ריק.
11. תוספות ל-Landmark: x ו-y בקובץ הם בפועל קו אורך וקו רוחב, ולכן extension מחזיר מהם coordinate ו-location. enum של סוגי מקומות (מרכז שדה, גן לאומי, חאן, חניון לילה, אחר) עם CaseIterable וצבע לכל סוג, וסוג המקום נקבע לפי המילה שמופיעה בשם.
12. Annotation משלנו: מחלקה שיורשת מ-NSObject וממשת MKAnnotation עם coordinate, title ו-subtitle, ותת-מחלקה LandmarkAnnotation שמקבלת Landmark ושומרת אותו. את כל ה-annotations יוצרים בעזרת map על המערך ומוסיפים בבת אחת עם addAnnotations.
13. תצוגה מותאמת: מממשים את viewFor annotation של delegate המפה. מחזירים nil לכל annotation שאינה LandmarkAnnotation, כדי לא לשנות למשל את נקודת המשתמש. ל-MKMarkerAnnotationView קובעים markerTintColor לפי סוג המקום, ו-glyphTintColor. יש גם MKPinAnnotationView עם pinTintColor.
14. לחיצה על סיכה: canShowCallout ו-rightCalloutAccessoryView עם כפתור מידע. ב-calloutAccessoryControlTapped כרגע רק מדפיסים, ומציגים את מיקום המשתמש ואת מיקום הנקודה.
שימו לב
- בדיקה של ההרשאה כאילו כבר הייתה קיימת לא מספיקה: בהרצה הראשונה המיקום לא מוצג כי ההרשאה מתבקשת רק אחרי הבדיקה. לשם כך מוסיפים Notification.
- לחזור למצב "עדיין לא ביקשו רשות" אפשר בהגדרות הסימולטור: Privacy, Location Services, והבחירה ב-Ask Next Time.
- הקובץ מגיע מאתר data.gov.il של מדינת ישראל, והומר מאקסל ל-JSON.
אחרי השיעור אפשר להציג מפה עם סוגי תצוגה, לבקש רשות מיקום ולהציג נקודות עניין צבעוניות מקובץ JSON.
השיעור הבא בקורס: עבודה עם SplitViewController Master Details

פרקי ההרצאה: הצגת מפה והצגת מיקום המשתמש

  1. 00:00

    פרויקט Tabbed Application חדש

  2. 01:43

    יצירת MapsViewController

  3. 03:00

    הוספת Capability של Maps

  4. 03:35

    הוספת Map View ואילוצים

  5. 04:52

    Navigation Controller ו-Segmented Control

  6. 07:51

    החלפת סוג המפה בקוד

  7. 09:22

    בקשת הרשאת מיקום ב-Info.plist

  8. 10:40

    מחלקת LocationManager כסינגלטון

תמלול ההרצאה: הצגת מפה והצגת מיקום המשתמש

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

  1. 00:02

    טוב, אז כאמור אנחנו רוצים להתחיל בלהציג מפה, בבחירת סוג מפה אז בואו נפתח פשוט פרויקט ב-Xcode ונתחיל לעבוד אנחנו נפתח את Xcode ואנחנו ניצור פרויקט חדש Create New Project אנחנו רוצים לבחור ב-TabDap בגלל שהאפליקציה שלנו תשתמש בטאבים כמו שאפשר לראות בפרויקט אז Tabmed Application

  2. 00:26

    ובואו נקרא לזה Locations Project כי זה מה שאנחנו מוכנים לעשות בפרויקט טוב, כדי להתחיל את הפרויקט הרגל ימין בואו ניכנס רגע ל-Storyboard ואנחנו רוצים בסטורי וורד עצמו למחוק מפה מה שלא רלוונטי אני לא אוהב שיש לי view controllerים מוכנים אנחנו נעדיף ליצור אותם

  3. 01:03

    לבד אז מחקתי את ה-view controller השני לכל הפחות וגם את שני הקבצים האלה first view controller ו-second view controller אנחנו נרצה למחוק אותם כדי לייצר קבצים בעצמנו עם שמות נכונים והגיוניים אז move to trash, יפה אז יש לנו פה בעצם tab dark controller עם איזשהו view controller בסיסי

  4. 01:23

    אנחנו נמחק מפה את כל הפקדים אני מסמן את הפקדים ועושה delete ובנוסף לזה יש לנו עוד קצת דברים לא רצויים אז ב-assets קיבלנו פה שתי תמונות ל-first ול-second אנחנו לא נשתמש בתמונות של עיגול וריבוע אז בואו נעשה גם לזה delete פשוט נמחק אותם עם backspace אוקיי אז יש לנו פרויקט חדש עם תא בר ויש לנו כרגע תא בחד בואו ננסה להציג פה את המפה

  5. 01:49

    כדי להציג בכלל מפה וכאלה אנחנו רוצים view controller אז בתוך הפרויקט ב-locations project אנחנו נעשה קליק ימני ניצר גרופ חדש עבור כל הקונטרולרים שיהיו לנו פה נקרא לזה קונטרולרס ובתוך הגרופ של הקונטרולרס אנחנו נרצה לעשות קובץ חדש שיורש מ-cocotouch-class שיורש מ-uaview-controller אז אנחנו נקרא לזה maps-view-controller ונעשה

  6. 02:18

    אישור וניצור את הקלאס בתוך התקייה הרצויה יפה אז בסטורי בורד עכשיו אנחנו נרצה לשייך את הקובץ הזה אנחנו נתפוס את ה-view-controller הזה שכתוב עליו first ואנחנו נעמוד פה ונשנה את זה מ-first-view-controller ל-maps view controller שזה אתה יצר.

  7. 02:38

    בנוסף אנחנו נרצה לשנות פה את התמונה פונט של הבר בטון אייטם, אז אני אעמוד פה על הבר בטון אייטם איפה שכתוב first ואנחנו נשנה את זה קצת, אנחנו נבחר פה במקום התמונה הזאת של first שכבר לא קיימת בפרויקט, בואו נחפש map pin and אליפס, אז זה פשוט האייקון שאנחנו רוצים עבור החלק הזה.

  8. 03:03

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

  9. 03:30

    אז אפשר לא לסמן אף אחד מהדברים האלה אלא פשוט דאגנו בעצם לשלב את מפקיד בפרויקט שלנו את המפות בפרויקט יפה אז יש לנו view controller שייכנו אותו לקלאס ועכשיו אנחנו רוצים פשוט להוציא פה את המפה אז בואו נעשה פלוס ואנחנו נוסיף פה map view.

  10. 03:49

    אני מחפש פשוט map view בחיפוש של הפקדים ואנחנו גוררים לפה את המפה שלנו. אנחנו נרצה שהמפה תתפוס את כל השטח אז מבחינת אילוצים אנחנו נוסיף new constraints, נוריד את ה-constraints to margins, נדאג שכל האילוצים יהיו ביחס ל-view.

  11. 04:12

    אוקיי, אני תופס את כל החיצים פה ודואג שאילוצים יהיו ביחס ל-view ולא ביחס ל-save area ועכשיו עכשיו אנחנו נעשה פה אפס אפס על כל האילוצים ואישור.

  12. 04:21

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

  13. 04:34

    אתם רואים אני עומד פה על האילוץ, עושה דאבל קליק ועושה אפס ואנטר. למרות שציינתי אפס קודם כשיצרתי את האילוצים, אבל באג באקסקוד הוא לא קולט את האפס הזה, אז אני מוסיף אותו עדנית יפה אז יש לנו פה בעצם את המפה וחוץ מהמפה אנחנו רוצים לעטוף את כל ה-view קונטרולר הזה ב-navigation קונטרולר כדי להציג

  14. 04:55

    תפריט למעלה סרגל אז כדי לעטוף את זה ב-navigation קונטרולר בואו נלחץ פה על editor embedding navigation controller ועכשיו אנחנו בעצם ב-view עם navigation וזה המפס וקונטרולר שלנו ולכאן בשביל לבחור את הסוג מפה בהמשך אנחנו נרצה להוסיף ui segmented control ואותו אנחנו נרצה לשים ממש בתוך הסרגל בסדר אז היינו חייבים

  15. 05:23

    פשוט לעשות navigation controller אני אעשה רגע zoom in על הדבר הזה אתם רואים את המילה first קשה לתפוס אותה אתם רואים אני עומד פה ואני בעצם מקבל פה בצד ימין את הטייטל אז אנחנו נלך לצד שמאל ל ui segmented control עצמו במספר הסגמנטים איפה שכתוב פה 2 אנחנו נשנה ל3 ובסגמנט הראשון אנחנו נבחר את המפה הנורמלית אז נקרא לזה סטנדרט הסגמנט השני אנחנו משנים פה איפה שכתוב סגמנט 0 סטנדרט אנחנו משנים

  16. 05:57

    לסגמנט 1 ובמקום המילה סקונד אנחנו נרצה להגיד שזה מפה של סאטלייט אז נכתוב סאטלייט ועכשיו נשנה את הסגמנט הבא אז אני עומד על הסגמנט פה ונשנה את זה לסגמנט 2 ובסגמנט האחרון אנחנו רוצים מפה היברידית שבעצם כוללת גם את המפה הרגילה של הסאטלייט ובנוסף היא מוסיפה עליה ציורי כבישים אז לזה קוראים מפה היברידית

  17. 06:23

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

  18. 07:00

    נקרא לזה Change Map Type ובטייפ אנחנו רוצים שזה יהיה UISegmented Control ו-Connect אז כאן בעצם זו פונקציה שקוראת מתי שמשנים סגמנט נכון?

  19. 07:13

    המפה עצמה אנחנו נוציא Outlet Control Drag ונקרא לזה MapView מעולה עוד רגע הקומפיילר יגיד לי שלא הוספתי אימפורט למה זה MKMapView הוא שואל ובצדק כדי שהוא יזהה את MapView אנחנו רוצים לעשות אימפורט ל-MapKit אז אנחנו נעלה למעלה ונוסיף אימפורט פשוט ל-MapKit וזה יעלים לי את השגיאה, יפה.

  20. 07:39

    עכשיו בואו נריץ רגע את הפרויקט, נראה שבעצם כבר הצגנו מפה, זה מה שדרוש כדי להציג מפה, רק להוסיף map view, אז אנחנו עכשיו מציגים מפה.

  21. 07:48

    מה לגבי הדבר הזה שאנחנו לוחצים פה ולא קורה שום דבר, לגבי us segmented control? הוצאנו בעצם action, change map type, וכל מה שאנחנו צריכים לעשות כדי לגרום לזה לקרוב זה לבדוק מה הסגמנט הנבחר, אז בואו נעשה סוויץ' על הסנדר נקודה סלקטד אינדקס, ויש לנו את הקייס של 0

  22. 08:09

    כאן אנחנו רוצים להציג מפה רגילה אז mapview.maptime שווה יש פה אינה שבוחרת את הסוגים של המפות ואנחנו רוצים את המפה הסטנדרטית במקרה הזה אנחנו נוסיף עוד קייס אז קייס 1 זה הסגמנט של הסאטללייט למעשה אז mapview.maptime יהיה צריך להיות שווה לסאטללייט אם ככה ואנחנו נוסיף קייס 2 שזה הסגמנט האחרון כלומר

  23. 08:36

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

  24. 09:00

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

  25. 09:24

    אחר שנקרא CL Location Manager. אז קודם כל בואו נתחיל לעבוד על ה-Permission קודם כל, על ה-Autorization. כדי לעבוד על ה-Autorization אנחנו נלך לקובץ הזה שנקרא InfoP-List ואנחנו נרצה ללחוץ פה פלוס איפה שהפלוס כאן למעלה פה ונעשה פלוס ואנחנו רוצים להוסיף Privacy אז בואו נחפש את Privacy ומתוך

  26. 09:53

    פריבסי אנחנו רוצים את הלוקיישן ולא סתם את הלוקיישן אלא את הלוקיישן when it used usage description אז זה בעצם מה שבחרתי כאן ופה אנחנו נותנים איזשהו סטרינג שיוצג למשתמש למה האפליקציה רוצה את המיקום של המשתמש אז אנחנו רוצים את זה כדי להציג show your location on the map ואנחנו רוצים שהמשתמש יסכים לדבר הזה אז זה בעצם הבקשה שלנו זה ככה

  27. 10:22

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

  28. 10:34

    אז אני עומד כאן ואנחנו עושים New Group, נקרא לזה Models, והמודל שלנו בעצם ינגיש לנו את כל השירותים של Core Location, כלומר מציאת מיקום המשתמש, בקשת רשות וכן הלאה.

  29. 10:48

    כאן אנחנו נעשה New File, אנחנו רוצים Swift File רגיל פעם ואנחנו נקרא לזה Location Manager. אנחנו נרצה לעשות אינפורט לcore-location כי אנחנו נשתמש פה בcore-location ואנחנו נרצה לייצר קלאס כי אנחנו רוצים שהוא יהיה סינגלטון ואנחנו נקרא לזה לוקיישן מנאג'ר כמו השם של

  30. 11:12

    הקובץ עכשיו בסופר קלאס בינתיים לא נבחר כלום אבל עוד מעט נראה שאנחנו צריכים פה לרשת ממשהו אז אנחנו נראה ממה וברגע שיש לנו את הקלאס הזה של הלוקיישן מנאג'ר בואו מיד נהפוך את זה להיות סינגלטון כלומר נחביא את הבנאי ובנוסף אנחנו נרצה לייצר מופע אז בואו נעשה static let shared שווה ל-location-manager

  31. 11:41

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

  32. 11:48

    איזה תכונות יהיו לנו חוץ מהסינגלטון עצמו? אולי אני אלה רגע את התכונה למעלה מעל הבניים, עדיף שהתכונות יהיו מוצגות לפני, ואתם יודעים בקלאסים יש לנו תכונות ופעולות, אז יש לנו פרופרטיס, אחד הפרופרטיס זה ה-shared-element ודבר שני, אנחנו נרצה לעבוד אמרנו עם לוקיישן מנאג'ר של אפל אז יהיה לנו פה לד או פריבייט לד

  33. 12:11

    שהוא לא יהיה חשוף באף מקום אחר חוץ מבקלס הזה הוא יהיה לוקיישן מנאג'ר של אפל הוא יהיה cl לוקיישן מנאג'ר אז בוא נקרא לו cl lm כדי לקצר קצת והוא יהיה שווה לcore לוקיישן מנאג'ר חדש יש עכשיו ברגע שאנחנו מתחילים לעבוד אנחנו בעצם נרצה להיות הדלגייט של הcore לוקיישן מנאג'ר וככה אנחנו נוכל

  34. 12:38

    לבקש רשות ודברים נוספים ולדעת מה מצב ההסכמה של המשתמש אז הדבר הראשון שאנחנו נעשה זה core-location-manager.delegate שווה ל-self ואם אתם רוצים להיות ה-delegate זה אומר שצריך לממש פה את הפרוטוקול הבא cl-location-manager-delegate אז בוא ננסה רגע לממש את זה ונראה מה זה אומר לנו

  35. 12:59

    extension ל-location-manager שאנחנו נמצאים בו כדי לממש את ה-delegate של אפל של ה-core-location-manager של אפל אנחנו ננסה לעשות את זה ואומר לי שלוקיישן מנאג'ר צריך לממש את הפרוטוקול שנקרא NSObject פרוטוקול עכשיו זה פרוטוקול שמכיל המון מתודות אז אם אני אלחץ פה ואל תלחצו אז אנחנו נראה שהוא מוסיף לי פה מלא מתודות

  36. 13:21

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

  37. 13:45

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

  38. 14:00

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

  39. 14:10

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

  40. 14:19

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

לקורס המלא: קורס פיתוח אפליקציות לאייפון

ההרצאה הקודמת: הסבר על מפות ושירותי מיקום ב-Xcode

ההרצאה הבאה: עבודה עם SplitViewController Master Details

הרצאות קשורות מקורסים אחרים

  • מאפינים של המשתמש
  • ולידציה על קלט המשתמש - Validation
  • מיקום הטלפון במפה של גוגל - Geolocation
  • הצגת תמונות באפליקציה

קורסים נוספים במסלול

  • קורס יסודות התכנות - שפת JAVA - קורס ג'אווה למתחילים
  • קורס פיתוח אפליקציות - לאנדרואיד - Android - ב-JAVA
  • קורס פלאטר - Flutter - שפת DART של גוגל למובייל - פיתוח אפליקציות לאנדרואיד ואייפון
  • קורס PhoneGap - פיתוח אפליקציות לאנדרואיד ואייפון