ارسال البيانات بين الView Controllers - الجزء الأول

Ammar AlTahhanمنذ 7 سنوات

بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته

 

في أغلب الأحيان، عندما تقوم بتصميم برنامج يحتوي على أكثر من شاشة View Controller، ستحتاج لإرسال البيانات من شاشة لأخرى (سواء للأمام أو الخلف) ليكتمل تصميم البرنامج.

في هذه المقالة، سنستعرض احدى اسهل الطرق لارسال البيانات من شاشة الى شاشة تالية، سنسرسل بيانات من انواع مختلفة String, Int, UIImage.

 

أولا/ بناء المشروع

1: قم بانشاء مشروع جديد من نوع Single View Application بأي اسم ترغبه

2: أضف View Controller جديدة الى الStoryboard

59652d54df313_ScreenShot2017-07-11at9_58_09PM.thumb.png.81ebc6f3cc06964633c90ef98513cc21.png

 

3: قم بتحديد الView Controller الأولى واختر Embed In > Navigation Controller

59652d5b2aae7_ScreenShot2017-07-11at9_58_50PM.thumb.png.564810ae31f78a9130b54ac78f103c95.png

 

4: أضف الأدوات المطلوبة (Text Field, Image View, Button) كما في الصورة

59652d6160b41_ScreenShot2017-07-11at10_06_08PM.thumb.png.721d20733de2eeeb440bac9eba88c4de.png

 

5:  أنشئ ملف Cocoa Touch Class جديد باسم SecondVC واضفه الى الView Controller الثانية

59652d66da5d8_ScreenShot2017-07-11at10_08_13PM.thumb.png.11831ee18a605e13a9cda656e922ca4e.png

 

عند الضغط على الView Controller الثانية، تأكد من اضافة "SecondVC" في خانتي الClass والStoryboard ID كما في الصورة التالية

 

59652d72a8ad4_ScreenShot2017-07-11at10_52_05PM.thumb.png.6647805468c752f638ac436ed48ce97d.png

 

6: لإضافة الIBOutlets للView Controller الأولى قم بفتح الAssistant Editor للStoryboard والViewController.swift

59652d793dc7c_ScreenShot2017-07-11at10_14_34PM.thumb.png.902d9cdbacc4fcb56d431efb9a5b419a.png

 

7: مع الضغط على control، قم بسحب الأدوات الى الأيمن واضافتها كIBOutlets : (صورة متحركة، قم بالنقر عليها لمشاهدة الAnimation)

PassingDataTutorialGif.thumb.gif.574fe46c564d00ebfc753a2979e66a31.gif

 

8: عند اضافة الButton تأكد من اضافته كAction وليس كOutlet

59652cdb672eb_ScreenShot2017-07-11at10_29_11PM.png.cc6e7f85ac779e7efb829d1181ccafad.png

 

9: الآن قم بعمل نفس الشيء مع الشاشة الأخرى، واضف الImage والLabel كOutlets

59652ce00323c_ScreenShot2017-07-11at10_31_00PM.thumb.png.2631e5f46d8814856073e97cd3080b3d.png

 

 ثانيا/ كتابة الكود

أولا قم باضافة التعديلات التالية على الكلاس الثاني (SecondVC) كما في الصورة

59652d4d8f8e5_ScreenShot2017-07-11at10_42_21PM.png.75aacf3e9d6a9b20999c5ed36c1fa531.png

 

قمنا بانشاء متغيرات في الكلاس الثاني، لتكون مستعدة لاستقبال البيانات من الكلاس الأول

وحالما يبدأ عرض الشاشة، سيقوم السطرين المضافين الى الميثود ()viewDidLoad بعرض هذه البيانات الى المستخدم 

 

الآن، قم باضافة الكود التالي في داخل الميثود ()sendBtnTapped في الكلاس الأول


let myVC = storyboard?.instantiateViewController(withIdentifier: "SecondVC") as! SecondVC
myVC.stringPassed = textField.text!
myVC.imagePassed = imageView.image!
navigationController?.pushViewController(myVC, animated: true)

في السطر الأول، قمنا بانشاء instance جديدة من الView Controller الثانية

في السطر الثاني والثالث، استخدمنا هذه الinstance لتمرير المعلومات من الكلاس الأول الى المتغيرات التي أنشأناها في الكلاس الثاني

وأخيرا في السطر الرابع، قمنا بطلب الانتقال من الشاشة الأولى الى الشاشة الثانية (أو بمعنى أدق، عرض الشاشة الثانية فوق الشاشة الأولى)

 

بقي أن تضيف صورة الى الUIImageView في الشاشة الأولى باستخدام الStoryboard 

قمت أنا باضافة لوقو أبل كصورة تجريبية:

59652f2173b8d_ScreenShot2017-07-11at11_03_06PM.thumb.png.a28ee223dad0ea17753545f28bc8d107.png

 

 

الآن قم بتشغيل البرنامج، وأضف اي نص في الText Field واضغط على الزر لمشاهدة النتيجة: (صورة متحركة، قم بالنقر عليها لمشاهدة الAnimation)

PassingDataTutorialGif2.thumb.gif.dcd9e7f3fe641c65baf2f41748ac5160.gif

 

في الجزء الثاني سنتعرف بإذن الله على طريقة أخرى لارسال البيانات من كلاس لآخر.

بحفظ الله ورعايته.

 

 

كلمات دليلية:
1
إعجاب
3215
مشاهدات
0
مشاركة
0
متابع
متميز
محتوى رهيب

التعليقات (0)

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !