
הטקסט המלא של הדקות הראשונות בהרצאה «עבודה עם UIPickerView» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום וברוכים הבאים אנחנו רוצים לדבר היום על picker view בדומה לפיקר שהכרנו בשבוע שעבר בשיעור שעבר שבו ראינו איך בוחרים תאריכים היום אנחנו רוצים לבחור בחירה שאתם הגדרתם בחירה שאפשרואל שאנחנו הגדרנו כדי לעשות את זה אנחנו נראה שנצטרך לממש שתי פרוטוקולים ה-UIPickerViewDelegate וה-UIPickerViewDataSource אז בואו נקפוץ לסרטון
ונדגים אני קופץ ל-Xcode ומייצר פרויקט חדש לשיעור אנחנו נקרא לשיעור שלנו pickers והפעם אנחנו נעשה ככה פרויקט נחמד ומתגלגל. בואו נקרא לו pickers וכמובן נשמור אותו בספרייה של הקורס.
בסטורי מורד שלי אנחנו רוצים להוסיף, איך נרכשתם, picker view אז בואו נחפש אותו. בשיעור שעבר ראינו את הדייט פיקר, היום אנחנו רוצים לראות את הpicker view ואפשר למצוא אותו ברשימה.
הנה הוא, יפה. עכשיו לגבי אילוצים אני פשוט אצמיד אותו לשלוש הפינות של המסך, למעלה ולצדדים, אלה הייעוצים שבחרתי.
ל-peeker view כמו כל הפקדים למען האמת אנחנו רוצים לגרור outlet, אז בואו נוסיף outlet, אני אקרא ל-outlet שלי "peeker", בסדר? סתם שיהיה לנו ככה רפרנס ל-peeker.
בנוסף, אנחנו לא יכולים לגרור אקשן עבור ה-peeker view כמו פקדים אחרים, בואו ננסה לבדוק את ההשערה הזאת, כן, אין אפשרות כזאת.
למה אנחנו לא יכולים לגרור אקשן? כיוון שכביכול יש לפקאד הזה יותר מדי אקשנים כדי לתאר בצורה הפשוטה הזאת שהראינו קודם ועל כן אנחנו נדרשים לממש את הדלגייט ואת הדאטה סורס שראינו קודם.
איך נעשה את זה? יש לנו שתי אפשרויות כרגיל, אפשרות אחת זה להגיד פה בקוד picker.delegate = self ואז אנחנו נצטרך לממש את הפרוטוקול uipickerview.delegate.
עשינו כבר דברים דומים ולכן אנחנו יודעים שאנחנו נרצה לעשות מימוש של פרוטוקולים באקסטנצ'ן כי זה מאוד יפה ומסודר. אז אם היינו הולכים אני רק אסגור פה את הנקודה הזאת אם היינו הולכים בשיטה הזאת היינו אומרים שווה לסלף ואז היינו יכולים להגיד אקסטנצ'ן לויו קונטרולר שאני נמצא בו כדי לממש את הפרוטוקול של UIP
קריוויו דלגייט וכאן אנחנו צריכים לממש פעולות בסדר זה הרעיון ככה עושים את זה אבל אני לא רוצה להירשם כדלגייט מהויו קונטרולר בגלל שזה מוסיף לי עוד שורת קוד וגם באחד השיעורים ראינו שיש שיטה נוספת.
אז בואו ננקה קצת את המקום ואת השטח, ומה שאנחנו נעשה במקום זה למשוך מהפיקר ל-view-controller בצורה הזאת, כאן ב-storyboard, ואני רוצה להיות הדלגייט.
זה אותו דבר כמו השורה שמרחקתי עכשיו, דלגייט שווה לסל. באותו אופן, אני גם ארצה למשוך מהפיקר ל-view-controller, ואנחנו גם רוצים להיות הדאטה סורס.
יפה? אז עכשיו אני גם הדאטה סורס וגם הדלגייט מבלי להוסיף שורות קוד. אנחנו כן נרצה אבל extension כדי להיות הדלגייט וכן נרצה extension כדי להיות הדאטה סורס אז בואו אנחנו רוצים לממש שתי פרוטוקולים uip review delegate uip review data source
עכשיו אני אסגור שנייה את הסיסטנט אדיטור ואז אתם יכולים לשאול מה התפקיד של הדלגייט ומה התפקיד של הדאטה סורס הדלגייט אמור להגיב לאירועים והדאטה סורס אמור להכתיב איזה דאטה אנחנו נציג בסדר בואו ננסה לבדוק את הדבר הזה בוויו קונטרולר עצמו מבחינת קוד.
קודם כל ברגע שיש לכם הודעה כזאת שאנחנו לא מממשים פרוטוקול אפשר בהחלט לראות לאיזה פעולה מתכוונים ולהוסיף את הפעולה של הפרוטוקול. זה תמיד דבר טוב.
עכשיו זה באמת עונה פה על השאלה שלנו גם בגלל שהוא שואל אותי כמה קומפוננטות יהיו בפיקר ויו האם אתה רוצה להציג רק גלגל אחד בפיקר או האם אנחנו רוצים להציג מספר גלגלים בפיקר אתם זוכרים כאן אני רואה גלגל אחד אבל בואו נסתכל על דוגמה אחרת נניח ברכבת ישראל אז יש להם שתי גלגלים
בפיקר שלהם בסדר אז עכשיו אני אשאל את השאלה על ידי הפרוטוקול number of components number of components פירושו מספר הגלגלים אני כרגע רוצה להשאיר את הדוגמה פשוטה ואחר כך נעשה דוגמה כמו ברכבת ישראל ואני אחזיר קומפוננטה אחת בעברית גלגל אחד one wheel יפה מה זה מספר השורות בכל קומפוננטה בגלל שיש לי רק קומפוננטה אחת אז מספר השורות זה יהיה
פשוט מספר הפריטים שאני מציג אז אם אני רוצה להציג 5 פריטים אני אציג פה 5 פריטים זהו זה הכל מימשנו את הפרוטוקול בואו נריץ נראה מה יוצא כמובן לא שמנו דאטה אתם בטח שמתם לב 1 2 3 4 5 שימו על השאלה יפה זאת אומרת יש לנו פה איזושהי התקדמות הדבר הזה עושה מה שאנחנו רוצים יש פה פרוטוקול ויש פה דלגייט אבל לא החלטנו מה אנחנו מציגים, איזה מידע, ולכן הפיק ריוויו שלנו עדיין לא
יודע מה אנחנו רוצים להציג פה. בואו נבחר מידע שאנחנו מעוניינים להציג. נניח שאנחנו רוצים להציג ימים בשבוע, אז אני אגדיר פה איזשהו מערך של days, let days שווה ra, ונעשה פה יום ראשון, שנים ושלישים.
בסדר? אני לא הולך להגזים פה עם הדוגמה הזאת, כי אנחנו רוצים להספיק לעשות דברים נוספים גם. פשוט המערך, אתם כמובן מוזמנים להוסיף פה את ימות השבוע שחסרות.
אגב, עכשיו, ברגע שיש לי data source אמיתי, זאת אומרת יש לי פה איזשהו מידע מסוים, אז אני גם יכול להגיד שאני לא רוצה להחזיר פה 5, בסדר? 5 זה לא יפה.
כמה שורות באמת יש לי כמספר הבריטים במערך, נכון? אז מספר הבריטים במערך נתון על ידי days.account, מצוין.
עכשיו, מה לגבי התוכן של הפקדים? אתם בטח שואלים, ואני כבר מאוד מאוד רוצה לראות תוכן. התוכן נמצא דווקא בדלגייט. בואו נסתכל על הפרוטוקול של הדלגייט.
עשיתי קומנד קליק כדי להיכנס פנימה ולראות את הפרוטוקול. אולי זה לא נוח לנו ואנחנו צריכים להתרגל, בסדר? זאת אומרת, זה כתוב פה בצורה מאוד מאוד כללית.
זאת אומרת, בהחלט מעניין וכדאי להתרגל. כאן כתוב width עבור הקומפוננטה. אז אם הייתי רוצה לקבוע רוחב הייתי בא לפה. גובה של שורה עבור קומפוננטה אז אם הייתי רוצה לקבוע גובה הייתי יכול להוסיף את הפעולה הזאת עכשיו הנה זה מתחיל להיות מעניין טייטל for row או זה נשמע מעניין נכון זאת אומרת טקסט עבור שורה וזה
באמת מה שמעניין אותם נשים לב שיש פה עוד פעולה שנקראת view for row זאת אומרת כל פקד שהוא תן לי פקד ואני אציג אותו בשבילך בשורה הנוכחית ואז אפשר יהיה קסטייב לעשות דברים יפים אנחנו נגיע גם לשם אל תדאגו ו- did select row אומר לי לחצו על איזושהי שורה מה אתה רוצה לעשות בסדר אז בוא נבדוק אנחנו נרצה לממש את הפעולות
המעניינות פה אז איפה הדלגייט שלנו הנה הוא כאן אנחנו רוצים להתחיל לממש דברים מהדלגייט בדלגייט יש את title for row שהייתה לי נראית מעניינת וגם לכם בטח כי אתם מאוד רוצים שתהיה לכם את הפעולה הזאת בסדר איך עשיתי את זה שלא נגיד שקפצנו פה אנחנו בתוך בתוך ה-protocol extension בסדר ואני אומר טייטל פור רואו רואה שזה
באמת כמו שצריך ויאללה טייטל פור רואו קול מה אנחנו נחזיר ובכלל מה זה כל הפרמטרים אז הוא נותן לי את מספר השורה ואת האינדקס יותר נכון של השורה ואז אני צריך להחזיר סטרינג אוקיי הוא גם נותן לי את מספר הקומפוננטה אבל נשים לב שיש לי רק קומפוננטה אחת אז אני כרגע לא מתעניין
במספר הקומפוננטה זה תמיד יהיה הקומפוננטה הראשונה כותרת עבור השורה תהיה פשוט ניקח מהמערך של הדייס במקום הרוב ואת זה אני ארצה כבר להחזיר בסדר זה נורא קל אז אני ככה מרשה לעצמי אני אריץ עכשיו ואני מקווה לראות את כל הדאטה שלנו בתוך כמו שצריך יפה זה מה שהגדרנו פה במערך למטה נכון 1 2 3 אם אתם רוצים אתם כבר יכולים
לרוץ קדימה לפניי ובאמת לעשות פה את הפיק ריוויו של רכבת ישראל. איך נעשה פיק ריוויו שיש פה שתי קומפוננטות? איפה אנחנו קובעים את מספר הקומפוננטות? איפה שהחזרנו שם אחד, נכון?
Number of Components, אז זה ככה נשמע הגיוני. ודרך אגב, אם אני פשוט אגיד Number of Components שווה 2, אז מה אני אקבל?
שתי גלגלים. אוקיי, זה נחמד, זה ככה בכיוון. עכשיו הוא יציג לי בשתיהם את אותו דבר, נכון? למה?
כי בכותרת עבור שורה לא התייחסנו למספר קומפוננטה בסדר אז כאילו לא היה לנו שום התייחסות אבל מה קורה אם אנחנו רוצים לתת מידע שונה זאת אומרת אנחנו רוצים להגיד תחנות הלוך תחנות חזור כל מיני כאלה אני אגדיר את זה בצורה הזאת פשוט האמת היא שמה שברכבת ישראל עושים זה פחות
או יותר את כל התחנות בשתי הצדדים אז מבחינת רכבת ישראל פחות או יותר סיימנו תחנת מוצא תחנת יעד