Saturday, 27 January 2018

Edgesforextendedlayout - uitableviewcellstyle


رؤساء يصل إلى مففكروس في هذه المقالة، من قبل مارك رينولدز. مؤلف كتاب زامارين إسنتيالز. سنتخذ الخطوة التالية وننظر في كيفية استخدام أنماط التصميم والأطر يمكن أن تزيد من كمية التعليمات البرمجية التي يمكن إعادة استخدامها. وسوف تغطي المواضيع التالية: مقدمة مففمكروس مففم نمط التصميم المفاهيم الأساسية المشاهدات، فيودموديلز، والأوامر ملاحة البيانات ملاحة (فيوموديل إلى فيوموديل) تنظيم المشروع عملية بدء التشغيل إنشاء NationalParks. MvvmCross نهجنا سيكون لإدخال المفاهيم الأساسية على مستوى عال ثم الغوص في وإنشاء الحدائق الوطنية عينة التطبيق باستخدام مففمكروس. هذا سوف تعطيك فهم أساسي لكيفية استخدام الإطار والقيمة المرتبطة باستخدامه. مع أخذ ذلك في الاعتبار، يتيح البدء. (لمزيد من الموارد المتعلقة بهذا الموضوع، انظر هنا.) إدخال مففكروس مففكروس هو إطار مفتوح المصدر الذي تم إنشاؤه من قبل ستيوارت لودج. وهو يقوم على نموذج تصميم فيو-فيوموديل (مففم)، وهو مصمم لتعزيز إعادة استخدام التعليمات البرمجية عبر العديد من المنصات، بما في ذلك Xamarin. Android، Xamarin. iOS، ويندوز فون، ويندوز ستور، وف، وماك أوس X. و مففكروس يتم استضافة المشروع على جيثب ويمكن الوصول إليها في جيثبمفكروسمفمكروس. نمط مففم مففم هو اختلاف نمط نموذج-عرض-تحكم. فإنه يفصل المنطق وضعت تقليديا في كائن عرض إلى كائنين متميزة، واحدة تسمى عرض والآخر يسمى فيوموديل. وجهة النظر هي المسؤولة عن توفير واجهة المستخدم و فيوموديل مسؤولة عن منطق العرض. ويشمل منطق العرض تحويل البيانات من النموذج إلى نموذج مناسب لواجهة المستخدم للعمل مع تفاعل المستخدم ورسم خرائطه مع عرض الطلبات المرسلة إلى النموذج. يوضح الرسم البياني التالي كيفية توصيل الكائنات المختلفة في مففم: في حين أن مففم يقدم نموذج تنفيذ أكثر تعقيدا، هناك فوائد كبيرة منه، وهي كما يلي: يمكن فيووموديلز وتفاعلاتها مع نماذج عموما اختبار باستخدام أطر (مثل نونيت) التي هي أسهل بكثير من التطبيقات التي تجمع بين واجهة المستخدم وطبقات العرض فيوموديلز يمكن عموما إعادة استخدامها عبر مختلف تقنيات واجهة المستخدم والمنصات هذه العوامل تجعل نهج مففم على حد سواء مرنة وقوية. يتم تنفيذ المشاهدات في التطبيق مففمكروس باستخدام بنيات منصة محددة. بالنسبة لتطبيقات يوس، يتم تنفيذ المشاهدات بشكل عام كملفات فيوكونترولرز و زيب. يوفر مففمكروس مجموعة من الطبقات الأساسية، مثل مفكسفيوكونتولر. أن يوس فيوكونترولرز ترث من. ويمكن أيضا استخدام القصص المصورة بالتزامن مع مقدم مخصص لإنشاء المشاهدات سنناقش بإيجاز هذا الخيار في القسم بعنوان تنفيذ واجهة مستخدم يوس لاحقا في هذه المقالة. بالنسبة لتطبيقات أندرويد، يتم تنفيذ المشاهدات بشكل عام ك مفكساكتيفيتي أو مفكسفراغمنت جنبا إلى جنب مع ملفات التخطيط المرتبطة بها. فيوموديلز فيوموديلز هي الطبقات التي توفر البيانات والمنطق العرض لآراء في التطبيق. تتعرض البيانات إلى عرض كخصائص على فيوموديل، والمنطق الذي يمكن استدعاء من عرض كما يتعرض الأوامر. ترث فيوموديلز من فئة قاعدة مفكسفيوموديل. يتم استخدام الأوامر في فيوموديلز لفضح المنطق التي يمكن استدعاء من عرض استجابة تفاعلات المستخدم. تعتمد بنية الأمر على واجهة إكوماند المستخدمة في عدد من إطارات ميكروسوفت مثل ويندوز بريسنتاتيون فونداتيون (وف) و سيلفرليت. يوفر مففمكروس إمفكسكوماند. الذي هو امتداد إيكوماند. جنبا إلى جنب مع تنفيذ اسمه مفكسكوماند. يتم تعريف الأوامر بشكل عام على أنها خصائص على فيوموديل. على سبيل المثال: كل أمر يحتوي على طريقة عمل محددة، والتي تقوم بتنفيذ المنطق المطلوب استدعائه: يجب أن يتم تهيئة الأوامر ويجب تعيين طريقة العمل المناظرة: ربط البيانات يسهل ربط البيانات الاتصال بين طريقة العرض و فيوموديل من خلال إنشاء ملف ثنائي الاتجاه، ويتيح تبادل البيانات. تعتمد قدرات ربط البيانات التي يوفرها مففمكروس على القدرات الموجودة في عدد من إطارات واجهة المستخدم القائمة على ميكروسوفت زمل مثل وف و سيلفرليت. والفكرة الأساسية هي أنك ترغب في ربط خاصية في عنصر تحكم واجهة المستخدم، مثل خاصية نص عنصر تحكم إديتكست في تطبيق أندرويد إلى خاصية كائن بيانات مثل الخاصية الوصف ل ناتيونالبارك. الرسم التوضيحي التالي يصور هذا السيناريو: وسائط الربط هناك أربعة أنماط ملزمة مختلفة يمكن استخدامها لربط البيانات: أونيواي ملزمة. يخبرك هذا الوضع إطار ربط البيانات لنقل القيم من فيوموديل إلى عرض ونقل أية تحديثات للخصائص على فيوموديل إلى الخاصية عرض ملزمة. أونويتوسورس ملزمة. يخبرك هذا الوضع إطار ربط البيانات لنقل القيم من طريقة العرض إلى فيوموديل ونقل التحديثات لعرض الخصائص إلى الخاصية فيوموديل ملزمة. ربط ثنائي. يخبرك هذا الوضع إطار ربط البيانات لنقل القيم في كلا الاتجاهين بين فيوموديل و فيو، والتحديثات على أي من الكائن سيؤدي إلى تحديث الآخر. ويعد وضع الربط هذا مفيدا عند تحرير القيم. أونيتيمي ملزمة. يخبرك هذا الوضع إطار ربط البيانات لنقل القيم من فيوموديل إلى عرض عند إنشاء الارتباط في هذا الوضع، لا يتم رصد التحديثات إلى خصائص فيوموديل بواسطة طريقة العرض. واجهة إينوتيفيبروبيرتيشانجد واجهة إينوتيفيبروبيرتيشانجد جزء لا يتجزأ من جعل العمل ملزم البيانات بشكل فعال بمثابة عقد بين كائن المصدر والكائن الهدف. وكما يوحي الاسم، فإنه يحدد العقد الذي يسمح للكائن المصدر بإخطار الكائن الهدف عند تغيير البيانات، مما يسمح للهدف لاتخاذ أي إجراءات ضرورية مثل تحديث العرض. تتكون الواجهة من حدث إيفنتث بروبيرتيشانجد واحد يمكن للكائن الهدف الاشتراك فيه والتي يتم تشغيلها من قبل المصدر في حالة تغيير خاصية. يوضح النموذج التالي كيفية تنفيذ إينوتيفيبروبيرتيشانجد: مواصفات الربط يمكن تحديد الارتباطات بعدة طرق. بالنسبة لتطبيقات أندرويد، يمكن تحديد الارتباطات في ملفات التنسيق. يوضح المثال التالي كيفية ربط الخاصية تكستفيو مثيل تكستفيو إلى الخاصية الوصف في مثيل ناتيونالبارك: بالنسبة إلى يوس، يجب أن يتم الربط باستخدام أبي الربط. كريتيبيندينغ () هو طريقة مما يمكن العثور على مفكسفيوكونترولر. يوضح المثال التالي كيفية ربط الخاصية الوصف إلى مثيل إيليابيل: التنقل بين فيوموديلز التنقل بين الشاشات المختلفة داخل التطبيق هو القدرة الهامة. ضمن تطبيق مففمكروس، يتم تنفيذ هذا على مستوى فيوموديل بحيث منطق الملاحة يمكن إعادة استخدامها. مففكروس يدعم التنقل بين فيوموديلز من خلال استخدام طريقة شوفيومودلتغت () الموروثة من مفكسنافيغاتينغوبجيكت. والتي هي الطبقة الأساسية ل مفكسفيوموديل. يوضح المثال التالي كيفية الانتقال إلى ديتايلفيوموديل: تمرير المعلمات في العديد من الحالات، هناك حاجة إلى تمرير المعلومات إلى فيوموديل الوجهة. مففكروس يوفر عددا من الطرق لتحقيق ذلك. الطريقة الأساسية هي إنشاء فئة تحتوي على خصائص عامة بسيطة وتمرير مثيل من الفئة إلى شوفيومودلتغت (). يوضح المثال التالي كيفية تعريف فئة معلمات أثناء التنقل واستخدامها: لاستقبال المعلمات واستخدامها، يقوم فيوموديل الوجهة بتنفيذ أسلوب إينيت () الذي يقبل مثيل من المعلمات الفئة: سولوتيونبروجيكت أورغانيزاتيون سيكون لكل حل مففكروس نواة أساسية واحدة المشروع الذي يضم رمز يمكن إعادة استخدامها وسلسلة من المشاريع منصة محددة التي تحتوي على تطبيقات مختلفة. الرسم التخطيطي التالي يصور الهيكل العام: عملية بدء التشغيل مففكروس تطبيقات تتبع عموما تسلسل بدء التشغيل القياسية التي بدأتها التعليمات البرمجية منصة محددة داخل كل التطبيق. هناك عدة فئات التي تتعاون لإنجاز بدء التشغيل بعض من هذه الفئات يقيمون في المشروع الأساسي وبعضهم يقيمون في المشاريع الخاصة بالمنصة. تصف الأقسام التالية مسؤوليات كل فئة من الفئات المعنية. المشروع الأساسي لديه فئة التطبيق الذي يرث من مفكسابليكاتيون. فئة التطبيق يحتوي على تجاوز لطريقة إنيتياليز () بحيث على الأقل، فإنه يمكن تسجيل أول فيوموديل التي ينبغي تقديمها عند بدء تشغيل التطبيق: مشاريع الروبوت ودائرة الرقابة الداخلية لديها فئة الإعداد التي هي المسؤولة عن إنشاء كائن التطبيق من المشروع الأساسي خلال بدء التشغيل. يتم تحقيق ذلك عن طريق تجاوز طريقة كريتاب (): بالنسبة لتطبيقات أندرويد، يرث الإعداد من مفكساندرويدسيتوب. بالنسبة لتطبيقات يوس، يرث الإعداد من مفكستوسيتوب. يتم بدء تشغيل تطبيقات أندرويد بدء التشغيل الروبوت باستخدام خاص شاشة البداية النشاط الذي يستدعي فئة الإعداد ويبدأ عملية بدء مففكروس. يتم كل هذا تلقائيا لك كل ما عليك القيام به هو تضمين تعريف الشاشة البداية والتأكد من أنه تم وضع علامة على النشاط الإطلاق. التعريف هو كما يلي: بدء تشغيل دائرة الرقابة الداخلية بدء تشغيل التطبيق دائرة الرقابة الداخلية هو أقل قليلا الآلي وتبدأ من داخل فينيشيدلونشينغ () طريقة أبديليغات: إنشاء NationalParks. MvvmCross الآن أن لدينا المعرفة الأساسية للإطار مففكروس، يتيح وضع تلك المعرفة إلى والعمل وتحويل التطبيق ناتيونالباركس للاستفادة من القدرات التي تعلمناها للتو. إنشاء مشروع مففكروس الأساسية سنبدأ بإنشاء المشروع الأساسي. وسيتضمن هذا المشروع كل التعليمات البرمجية التي سيتم تقاسمها بين دائرة الرقابة الداخلية والروبوت التطبيق في المقام الأول في شكل فيوموديلز. وسيتم بناء المشروع الأساسي كمكتبة الفئة المحمولة. لإنشاء NationalParks. Core. قم بتنفيذ الخطوات التالية: من القائمة الرئيسية، انتقل إلى فيل نيو سولوتيون. من مربع الحوار الحل الجديد، انتقل إلى C مكتبة محمولة. أدخل NationalParks. Core للمشروع اسم الحقل، أدخل NationalParks. MvvmCross لحقل الحل، وانقر على موافق. إضافة حزمة بداية مففكروس للمشروع من نوجيت. حدد المشروع NationalParks. Core وانتقل إلى بروجيكت أد باكاجيس من القائمة الرئيسية. أدخل بداية مففمكروس في حقل البحث. حدد إدخال مفمكروس الساخن التونة كاتب حزمة وانقر على إضافة حزمة. تمت إضافة عدد من الأشياء إلى NationalParks. Core كنتيجة لإضافة الحزمة، وهي كما يلي: ملف package. config، الذي يحتوي على قائمة من المكتبات (دلز) المرتبطة حزمة مجموعة بداية مففمكروس. هذه الإدخالات هي روابط للمكتبات الفعلية في مجلد الحزم من الحل الشامل. مجلد فيوموديلز مع عينة فيوموديل اسمه فيرستفيوموديل. فئة التطبيق في App. cs. الذي يحتوي على طريقة تهيئة () بدء تشغيل التطبيق مففمكروس عن طريق استدعاء ريجيستيرابستارت () لبدء فيرستفيوموديل. سنقوم في نهاية المطاف بتغيير هذا لبدء فئة ماسترفيوموديل، والتي سوف تكون مرتبطة مع عرض الذي يسرد الحدائق الوطنية. إنشاء التطبيق مففكروس الروبوت الخطوة التالية هي إنشاء مشروع التطبيق الروبوت في نفس الحل. لإنشاء NationalParks. Droid. أكمل الخطوات التالية: حدد الحل NationalParks. MvvmCross، انقر بزر الماوس الأيمن عليه، وانتقل إلى إضافة مشروع جديد. من مربع الحوار مشروع جديد، انتقل إلى C الروبوت الروبوت التطبيق. أدخل NationalParks. Droid لحقل الاسم، وانقر على موافق. إضافة حزمة بداية مففكروس كيت إلى المشروع الجديد عن طريق اختيار NationalParks. Droid والتنقل إلى مشروع إضافة الحزم من القائمة الرئيسية. تمت إضافة عدد من الأشياء إلى NationalParks. Droid نتيجة لإضافة الحزمة، والتي هي كما يلي: package. config. يحتوي هذا الملف على قائمة من المكتبات (دلز) المقترنة حزمة مبفمكروس كيت بداية. هذه الإدخالات هي روابط إلى مكتبة فعلية في مجلد الحزم من الحل الشامل، والذي يحتوي على المكتبات التي تم تنزيلها بالفعل. فيرستفيو. هذه الفئة موجودة في المجلد المشاهدات، الذي يتوافق مع فيرستفيوموديل. الذي تم إنشاؤه في NationalParks. Core. فيرستفيو. هذا التخطيط موجود في ريسورسلايوت. والذي يستخدمه نشاط فيرستفيو. هذا هو ملف تخطيط الروبوت التقليدية مع استثناء أنه يحتوي على إعلانات ملزمة في إديتفيو و تكستفيو العناصر. اقامة . هذا الملف يرث من مفكساندرويدسيتوب. هذه الفئة هي المسؤولة عن إنشاء مثيل من فئة التطبيق من المشروع الأساسي، والذي بدوره يعرض أول فيوموديل عن طريق مكالمة ل ريجيستيرابستارت (). شاشة البداية . ترث هذه الفئة من مفكسسبلاشسكريناكتيفيتي. يتم وضع علامة على الطبقة سبلاشسكرين كنشاط قاذفة الرئيسي وبالتالي تهيئة التطبيق مففمكروس مع دعوة إلى Setup. Initialize (). إضافة مرجع إلى NationalParks. Core عن طريق تحديد مجلد المراجع، انقر بزر الماوس الأيمن عليه، حدد تحرير المراجع. حدد علامة التبويب المشاريع، تحقق NationalParks. Core. وانقر على موافق. إزالة MainActivity. cs لأنها لم تعد هناك حاجة وسوف خلق خطأ في البناء. ويرجع ذلك إلى أنه تم وضع علامة على أنها إطلاق الرئيسي وهكذا هو فئة سبلاشسكرين جديدة. أيضا إزالة ملف تخطيط resourceslayoutmain. axml المقابلة. تشغيل التطبيق. فإن التطبيق تقديم فيرستفيوموديل. والتي ترتبط مثيل فيرستفيو المقابلة مع فئة إديتفيو، و تكستفيو يقدم نفس نص مففمكروس مرحبا. كما تقوم بتحرير النص في فئة إديتفيو، يتم تحديث فئة تكستفيو تلقائيا عن طريق ربط البيانات. لقطة شاشة التالية يصور ما يجب أن نرى: إعادة استخدام NationalParks. PortableData و NationalParks. IO قبل أن نبدأ في خلق وجهات النظر و فيوموديلز لدينا التطبيق، ونحن بحاجة أولا إلى جلب بعض التعليمات البرمجية من جهودنا السابقة التي يمكن استخدامها للحفاظ على المتنزهات. لهذا، سوف نقوم ببساطة إعادة استخدام سينغليتون ناتيونالباركسداتا والطبقات فيلهاندلر التي تم إنشاؤها سابقا. لإعادة استخدام ناتيونالباركسداتا سينغليتون وفيلهاندلر الطبقات، أكمل الخطوات التالية: نسخ NationalParks. PortableData و NationalParks. IO من الحل الذي تم إنشاؤه في الفصل 6، لعبة المشاركة في كتاب زامارين إسنتيالز (متوفر في باكتبوبابليكاتيون-ديفيلوبمنتكسامين-الضروريات). إلى مجلد حل NationalParks. MvvmCross. إضافة مرجع إلى NationalParks. PortableData في المشروع NationalParks. Droid. إنشاء مجلد باسم NationalParks. IO في المشروع NationalParks. Droid وإضافة ارتباط إلى FileHandler. cs من المشروع NationalParks. IO. تذكر أنه لا يمكن احتواء فئة فيلهاندلر في مكتبة الفئة المحمولة لأنه يستخدم أبي إو ملف لا يمكن أن تكون مراجع من مكتبة الفئة المحمولة. تجميع المشروع. وينبغي أن يجمع المشروع الآن بشكل نظيف. تنفيذ واجهة إينوتيفيبروبيرتيتشانجيد سنقوم باستخدام البيانات ملزمة لربط عناصر تحكم واجهة المستخدم إلى كائن ناتيونالبارك، وبالتالي، نحن بحاجة إلى تنفيذ واجهة إينوتيفيبروبيرتيتشانجيد. وهذا يضمن أن يتم الإبلاغ عن التغييرات التي تم إجراؤها على خصائص الحديقة إلى عناصر تحكم واجهة المستخدم المناسبة. لتنفيذ إينوتيفيبروبيرتيشانجد. أكمل الخطوات التالية: افتح NationalPark. cs في مشروع NationalParks. PortableData. حدد أن الطبقة ناتيونالبارك تنفذ واجهة إينوتيفيبروبيرتيتشانجيد. حدد واجهة إينوتيفيبروبيرتيتشانجيد، انقر بزر الماوس الأيمن على ذلك، انتقل إلى واجهة ريفاكتور تنفيذ. ثم اضغط على إنتر. أدخل مقتطف التعليمات البرمجية التالي: إضافة أسلوب أونبروبيرتيتشانجيد () يمكن استدعاؤه من كل طريقة إعداد خاصية: قم بتحديث كل تعريف خاصية لاستدعاء المحددات بنفس الطريقة كما هو موضح خاصية الاسم: تجميع المشروع. يجب أن يجمع المشروع بشكل نظيف. نحن الآن على استعداد لاستخدام ناتيونالباركسداتا سينغليتون في مشروعنا الجديد، ويدعم البيانات ملزمة. تنفيذ واجهة المستخدم الروبوت الآن، ونحن على استعداد لخلق وجهات النظر و فيوموديلز المطلوبة لدينا التطبيق. التطبيق الذي نقوم بإنشائه سوف يتبع التدفق التالي: عرض القائمة الرئيسية لعرض الحدائق الوطنية عرض التفاصيل لعرض تفاصيل حديقة محددة عرض تحرير لتعديل حديقة جديدة أو موجودة مسبقا عملية لخلق وجهات النظر و فيوموديلز في الروبوت التطبيق يتكون عموما من ثلاث خطوات مختلفة: إنشاء فيوموديل في المشروع الأساسي مع البيانات ومعالجات الحدث (الأوامر) المطلوبة لدعم عرض. إنشاء تخطيط الروبوت مع عناصر مرئية ومواصفات ربط البيانات. إنشاء نشاط أندرويد، الذي يتوافق مع فيوموديل ويعرض تخطيط. في حالتنا، ستكون هذه العملية مختلفة قليلا لأننا سنعيد استخدام بعض أعمالنا السابقة، وتحديدا، ملفات التخطيط وتعريفات القائمة. لإعادة استخدام ملفات التخطيط وتعريفات القائمة، قم بتنفيذ الخطوات التالية: نسخ Master. axml. التفاصيل. و Edit. axml من المجلد ريسورسلايوت من الحل الذي تم إنشاؤه في الفصل 5، تطوير أول الروبوت التطبيق الخاص بك مع Xamarin. Android في كتاب أساسارين زامارين (متوفر في باكتبوبابليكاتيون-ديفيلوبمنتكسامين-الضروريات). إلى المجلد ريسورسلايوت في مشروع NationalParks. Droid، وإضافتها إلى المشروع عن طريق تحديد مجلد تخطيط والتنقل إلى إضافة إضافة ملفات. نسخ MasterMenu. xml. DetailMenu. xml. و EditMenu. xml من المجلد ريسورسمينو من الحل الذي تم إنشاؤه في الفصل 5، تطوير أول الروبوت التطبيق الخاص بك مع Xamarin. Android في كتاب أساسارين زامارين (متوفر في باكتبوبابليكاتيون-ديفيلوبمنتكسامارين-الضروريات). إلى المجلد ريسورسمينو في مشروع NationalParks. Droid، وإضافتها إلى المشروع عن طريق تحديد مجلد القائمة والتنقل إلى إضافة إضافة ملفات. تنفيذ عرض القائمة الرئيسية نحن الآن على استعداد لتنفيذ أول تركيبات فيوفيوموديل لدينا، وهو عرض القائمة الرئيسية. إنشاء ماسترفيوموديل الخطوة الأولى هي إنشاء فيوموديل وإضافة خاصية من شأنها أن توفر البيانات إلى عرض القائمة التي تعرض الحدائق الوطنية جنبا إلى جنب مع بعض رمز التهيئة. لإنشاء ماسترفيوموديل. أكمل الخطوات التالية: حدد المجلد فيوموديلز في NationalParks. Core. انقر بزر الماوس الأيمن عليه، وانتقل إلى إضافة ملف جديد. في مربع الحوار ملف جديد، انتقل إلى "عام فارغ" فئة. أدخل ماسترفيوموديل لحقل الاسم، وانقر فوق جديد. تعديل تعريف الفئة بحيث ترث ماستيرفيوموديل من مفكسفيوموديل سوف تحتاج أيضا إلى إضافة عدد قليل باستخدام التوجيهات: إضافة الخاصية التي هي قائمة عناصر ناتيونالبارك إلى ماسترفيوموديل. ستكون هذه الخاصية في وقت لاحق بيانات مرتبطة إلى عرض قائمة: تجاوز الأسلوب ستارت () على ماسترفيوموديل لتحميل مجموعة الحدائق مع البيانات من سينجليتون ناتيونالباركسداتا. ستحتاج إلى إضافة توجيه استخدام ل ناميباركس. بورتابل داتا نامسباس مرة أخرى: نحن الآن بحاجة إلى تعديل تسلسل بدء تشغيل التطبيق بحيث ماسترفيوموديل هو أول فيوموديل التي بدأت. فتح App. cs في NationalParks. Core وتغيير الدعوة إلى ريجيستيرابستارت () للإشارة ماسترفيوموديل. تحديث تخطيط Master. axml تحديث Master. axml بحيث يمكن الاستفادة من قدرات ربط البيانات التي تقدمها مففمكروس. لتحديث Master. axml. أكمل الخطوات التالية: افتح Master. axml وأضف تعريف مساحة الاسم إلى الجزء العلوي من شمل لتضمين مساحة الاسم NationalParks. Droid: مطلوب تعريف مساحة الاسم هذا للسماح لل أندرويد بحل عناصر مففكروس المحددة التي سيتم تحديدها. تغيير عنصر ليستفيو إلى عنصر Mvx. MvxListView: إضافة مواصفات ارتباط البيانات إلى عنصر مفكسليستفيو ربط خاصية إيتمسورس من طريقة عرض القائمة إلى الخاصية باركس من ماسترفيوموديل. كما يلي: إضافة سمة قالب عنصر قائمة إلى تعريف العنصر. يتحكم هذا المخطط في محتوى كل عنصر سيتم عرضه في عرض القائمة: قم بإنشاء تخطيط ناتيونالباركيتم وتوفير عناصر تكستفيو لعرض كل من اسم ووصف الحديقة كما يلي: إضافة مواصفات ربط البيانات لكل عنصر من عناصر تكستفيو: لاحظ أنه في هذه الحالة، سياق ربط البيانات هو مثيل عنصر في المجموعة التي كانت مرتبطة بمكسليستفيو. لهذا المثال، مثيل ناتيونال بارك. إنشاء نشاط ماسترفيو بعد ذلك، إنشاء ماسترفيو. وهو مثال مفكساكتيفيتي الذي يتوافق مع ماسترفيوموديل. لإنشاء برنامج ماستركيفيو. أكمل الخطوات التالية: حدد المجلد فيوموديلز في NationalParks. Core. انقر بزر الماوس الأيمن عليه، انتقل إلى إضافة ملف جديد. في مربع الحوار ملف جديد، انتقل إلى نشاط أندرويد. أدخل ماسترفيو في حقل الاسم، وحدد جديد. تعديل مواصفات الفئة بحيث يرث من مفكساكتيفيتي ستحتاج أيضا إلى إضافة عدد قليل باستخدام التوجيهات كما يلي: افتح Setup. cs وإضافة التعليمات البرمجية إلى تهيئة معالج الملفات ومسار سينجليتون ناتيونالباركسداتا إلى طريقة كريتاب ()، على النحو التالي : تجميع وتشغيل التطبيق سوف تحتاج إلى نسخ ملف NationalParks. json إلى الجهاز أو المحاكي باستخدام جهاز الروبوت مراقب. يجب عرض جميع الحدائق في NationalParks. json. تنفيذ عرض التفاصيل الآن لدينا عرض القائمة الرئيسية عرض الحدائق الوطنية، يمكننا التركيز على خلق عرض التفاصيل. سنتبع نفس الخطوات لعرض التفاصيل مثل تلك التي أكملناها للتو للعرض الرئيسي. إنشاء ديتايلفيومودل نبدأ في إنشاء ديتايلفيوموديل باستخدام الخطوات التالية: اتباع نفس الإجراء الذي تم استخدامه لإنشاء ماسترفيوموديل. إنشاء فيوموديل جديدة اسمه ديتايلفيوموديل في المجلد فيوموديل من NationalParks. Core. إضافة خاصية ناتيونالبارك لدعم البيانات ملزمة لعناصر التحكم في العرض، على النحو التالي: إنشاء فئة معلمات التي يمكن استخدامها لتمرير معرف حديقة للحديقة التي يجب عرضها. من السهل إنشاء هذه الفئة ضمن تعريف فئة فيوموديل أن المعلمات هي ل: تنفيذ أسلوب إينيت () التي سوف تقبل مثيل فئة معلمات والحصول على الحديقة الوطنية المقابلة من ناتيونالباركداتا: تحديث تخطيط Detail. axml التالي ، سنقوم بتحديث ملف التخطيط. التغييرات الرئيسية التي يجب القيام بها هي إضافة مواصفات ملزمة البيانات إلى ملف التخطيط. لتحديث تخطيط Detail. axml، قم بتنفيذ الخطوات التالية: افتح Detail. axml واضافة مساحة اسم المشروع الى ملف شمل: اضافة مواصفات ربط البيانات لكل عنصر من عناصر تكستفيو التي تتوافق مع خاصية المنتزه الوطني، كما هو موضح للحديقة اسم: إنشاء نشاط ديتايلفيو الآن إنشاء مثيل مفكساكتيفيتي التي ستعمل مع ديتايلفيوموديل. لإنشاء ديتايلفيو. قم بتنفيذ الخطوات التالية: اتباع نفس الإجراء الذي تم استخدامه لإنشاء ماسترفيو. إنشاء طريقة عرض جديدة باسم ديتايلفيو في مجلد المشاهدات من NationalParks. Droid. تنفيذ أساليب أونكريتوبتيونسمينو () و أونوبتيونستمتمزلكتد () بحيث القوائم لدينا سوف تكون في متناول. نسخ تنفيذ هذه الأساليب من الحل الذي تم إنشاؤه في الفصل 6، لعبة المشاركة في كتاب أساسارين أساسيات (متوفر في باكتبوبابليكاتيون-ديفيلوبمنتكسامارين أساسيات) AR4. يمكنك التعليق على القسم في أونوبتيونستمزليكت () المتعلق بإجراء التعديل في الوقت الحالي وسنملأ ذلك في وقت اكتمال مشاهدة التعديل. إضافة الملاحة الخطوة الأخيرة هي إضافة الملاحة بحيث عندما يتم النقر على عنصر في مفكسليستفيو على ماسترفيو. يتم عرض الحديقة في عرض التفاصيل. سنقوم بإنجاز هذا باستخدام خاصية الأوامر وتجميع البيانات. لإضافة التنقل، قم بتنفيذ الخطوات التالية: افتح ماسترفيوموديل وإضافة خاصية إمفكسكوماند سيتم استخدامها للتعامل مع منتزه يتم تحديده: إمفكسكوماند المحمية باركسلكتد إنشاء مندوب إجراء سيتم استدعاؤه عند تنفيذ الأمر باركسلكتد كما يلي: تهيئة الخاصية الأمر في منشئ ماسترفيوموديل: الآن، للحصول على الخطوة الأخيرة، إضافة مواصفات ربط البيانات إلى مففليستفيو في Master. axml لربط الحدث إيتمكليك إلى الأمر بارككليكيد على ماسترفيوموديل. التي أنشأناها للتو: تجميع وتشغيل التطبيق. النقر على حديقة في عرض القائمة يجب الآن انتقل إلى عرض التفاصيل، وعرض الحديقة المختارة. تنفيذ طريقة عرض التعديل لقد أصبحنا الآن خبراء تقريبا في تنفيذ طرق العرض وعارضات العرض الجديدة. واحد آخر عرض للذهاب هو عرض تحرير. إنشاء إديتيوففيوديل كما فعلنا سابقا، نبدأ مع فيوموديل. لإنشاء إديتفيوموديل. أكمل الخطوات التالية: اتباع نفس العملية التي كانت تستخدم سابقا في هذه المقالة لإنشاء إديتفيوموديل. إضافة خاصية ربط البيانات وإنشاء فئة معلمات للملاحة. تنفيذ طريقة إينيت () التي سوف تقبل مثيل فئة المعلمات والحصول على الحديقة الوطنية المقابلة من ناتيونالباركداتا في حالة تحرير حديقة موجودة أو إنشاء مثيل جديد إذا كان المستخدم قد اختار الإجراء الجديد. فحص المعلمات التي تم تمريرها لتحديد ما المقصود به: تحديث تخطيط Edit. axml تحديث Edit. axml لتوفير مواصفات ربط البيانات. لتحديث تخطيط Edit. axml، تحتاج أولا إلى فتح Edit. axml وإضافة مساحة اسم المشروع إلى ملف شمل. ثم قم بإضافة مواصفات ربط البيانات لكل عنصر من عناصر إديتفيو التي تتوافق مع خاصية المنتزه الوطني. إنشاء نشاط إديتفيو إنشاء مثيل مفكساكتيفيتي جديد اسمه إديتفيو للعمل مع إديتفيوموديل. لإنشاء إديتفيو. قم بتنفيذ الخطوات التالية: اتباع نفس الإجراء الذي تم استخدامه لإنشاء ديتايلفيو. إنشاء عرض جديد اسمه إديتفيو في مجلد المشاهدات من NationalParks. Droid. تنفيذ أساليب أونكريتوبتيونسمينو () و أونوبتيونستمسليكتد () بحيث الإجراء تم الوصول إليها من أكتيونبار. يمكنك نسخ تنفيذ هذه الأساليب من الحل الذي تم إنشاؤه في الفصل 6، لعبة المشاركة في كتاب زامارين أساسيات (متوفر في باكتبوبابليكاتيون-ديفيلوبمنتكسامين-الضروريات). تغيير تنفيذ تم استدعاء الأمر تم على إديتفيوموديل. إضافة التنقل إضافة التنقل إلى مكانين: عند النقر على جديد () من برنامج ماستركيفيو وعند النقر على إديت في ديتايلفيو. دعونا نبدأ مع ماسترفيو. لإضافة التنقل من ماسترفيوموديل. أكمل الخطوات التالية: افتح MasterViewModel. cs وأضف خاصية أمر نوبارككليد مع معالج الأمر. تأكد من تهيئة الأمر في منشئ، كما يلي: لاحظ أننا لا تمر في فئة معلمة في شوفيوموديل (). سيؤدي هذا إلى إنشاء مثيل افتراضي وتمريره، مما يعني أن باركيد سيكون نول. وسوف نستخدم هذا كوسيلة لتحديد ما إذا كان ينبغي إنشاء حديقة جديدة. الآن، وقتها لربط الأمر نيوبارككليكيد حتى عنصر القائمة أكتيوننيو. ليس لدينا وسيلة لتحقيق ذلك باستخدام ربط البيانات، ولذا فإننا سوف يلجأ إلى نهج أكثر تقليدية سوف تستخدم طريقة أونوبتيونستمزلكتد (). إضافة منطق لاستدعاء أسلوب التنفيذ () على نيوبارككليكيد. على النحو التالي: لإضافة الملاحة من ديتايلفيوموديل. أكمل الخطوات التالية: افتح DetailViewModel. cs وأضف خاصية الأمر إديتبارككليد جنبا إلى جنب مع معالج الأمر. تأكد من تهيئة الأمر في منشئ كما هو موضح في مقتطف التعليمات البرمجية التالي: لاحظ أن مثيل فئة معلمات يتم إنشاؤها وتهيئتها وتمريرها إلى طريقة شوفيوموديل (). سيتم تمرير هذا المثال بدوره إلى طريقة إينيت () على إديتفيوموديل. تهيئة الخاصية الأمر في منشئ ماسترفيوموديل. على النحو التالي: الآن، قم بتحديث الأسلوب أونوبتيونستمزليكت () في ديتايلفيو لاستدعاء الأمر DetailView. EditPark عند تحديد الإجراء تحرير: تجميع وتشغيل NationalParks. Droid. يجب أن يكون لديك الآن التطبيق وظيفية بالكامل لديها القدرة على إنشاء حدائق جديدة وتحرير الحدائق القائمة. يجب أن تنعكس التغييرات التي تم إجراؤها على إديتفيو تلقائيا في برنامج ماستركفيو و ديتايلفيو. إنشاء التطبيق مففكروس دائرة الرقابة الداخلية عملية إنشاء التطبيق الروبوت مع مففكروس يوفر فهم صلب لكيفية عمل الهندسة المعمارية الشاملة. إنشاء حل دائرة الرقابة الداخلية يجب أن يكون أسهل بكثير لسببين: أولا، ونحن نفهم كيفية التفاعل مع مففمكروس والثانية، كل المنطق وضعنا في NationalParks. Core هو قابلة لإعادة الاستخدام، لذلك نحن بحاجة فقط لخلق جزء عرض من التطبيق و رمز بدء التشغيل. لإنشاء NationalParks. iOS. أكمل الخطوات التالية: حدد الحل NationalParks. MvvmCross، انقر بزر الماوس الأيمن عليه، وانتقل إلى إضافة مشروع جديد. من مربع الحوار مشروع جديد، انتقل إلى C يوس فون عرض واحد التطبيق. أدخل NationalParks. iOS في حقل الاسم، ثم انقر فوق موافق. إضافة حزمة بداية مففكروس كيت إلى المشروع الجديد عن طريق اختيار NationalParks. iOS والتنقل إلى المشروع إضافة حزم من القائمة الرئيسية. تمت إضافة عدد من الأشياء إلى NationalParks. iOS نتيجة لإضافة الحزمة. وهي كما يلي: package. config. يحتوي هذا الملف على قائمة من المكتبات المقترنة حزمة مبفكروس كيت بداية. هذه الإدخالات هي روابط إلى مكتبة فعلية في مجلد الحزم من الحل الشامل، والذي يحتوي على المكتبات التي تم تنزيلها بالفعل. فيرستفيو. يتم وضع هذه الفئة في المجلد المشاهدات، الذي يتوافق مع مثيل فيرستفيوموديل التي تم إنشاؤها في NationalParks. Core. اقامة . يرث هذه الفئة من مفكستوسيتوب. هذه الفئة هي المسؤولة عن إنشاء مثيل من فئة التطبيق من المشروع الأساسي، والذي بدوره يعرض أول فيوموديل عن طريق مكالمة ل ريجيستيرابستارت (). AppDelegate. cs. txt. تحتوي هذه الفئة على التعليمات البرمجية بدء تشغيل نموذج، والتي يجب وضعها في ملف AppDelete. cs الفعلي. تنفيذ واجهة مستخدم يوس نحن الآن على استعداد لإنشاء واجهة مستخدم لتطبيق يوس. والخبر السار هو أن لدينا بالفعل جميع فيوموديلز تنفيذها، لذلك يمكننا ببساطة إعادة استخدامها. الأخبار السيئة هي أننا لا يمكن بسهولة إعادة استخدام القصة المصورة من عملنا السابق مففكروس تطبيقات عموما استخدام ملفات زيب. أحد أسباب ذلك هو أن القصة المصورة تهدف إلى توفير قدرات الملاحة و مففكروس التطبيق المندوبين تلك المسؤولية ل فيوموديل ومقدم. فمن الممكن استخدام القصص المصورة في تركيبة مع مقدم مخصص، ولكن ما تبقى من هذه المقالة سوف تركز على استخدام ملفات زيب، وهذا هو الاستخدام الأكثر شيوعا. تخطيطات الشاشة يمكن استخدامها كما هو مبين في الصورة التالية: نحن الآن على استعداد للبدء. تنفيذ طريقة العرض الرئيسية العرض الأول الذي سنعمل عليه هو طريقة العرض الرئيسية. لتنفيذ طريقة العرض الرئيسية، أكمل الخطوات التالية: إنشاء فئة فيوكونترولر جديدة باسم ماسترفيو بالنقر بزر الماوس الأيمن على مجلد المشاهدات من NationalParks. iOS والتنقل إلى إضافة ملف جديد دائرة الرقابة الداخلية فون عرض المراقب المالي. فتح MasterView. xib وترتيب الضوابط كما رأينا في تخطيطات الشاشة. إضافة منافذ لكل من عناصر التحكم في التحرير. افتح MasterView. cs وإضافة المنطق النمطي التالي للتعامل مع القيود على دائرة الرقابة الداخلية 7، على النحو التالي: ضمن طريقة فيوديدلواد () إضافة منطق لإنشاء مفكسستانداردتابلفيوسورس للمتنزهاتتابلفيو: لاحظ أن المثال يستخدم نمط خلية الترجمة ويربط الحديقة الوطنية الاسم والوصف للعنوان والترجمة. إضافة منطق الربط إلى طريقة فيويدشو (). في الخطوة السابقة، قدمنا ​​مواصفات خصائص إيتابيفيووسيل إلى الخصائص في سياق الربط. In this step, we need to set the binding context for the Parks property on MasterModelView : Compile and run the app. All the parks in NationalParks. json should be displayed. Implementing the detail view Now, implement the detail view using the following steps: Create a new ViewController instance named DetailView . Open DetailView. xib and arrange controls as shown in the following code. Add outlets for each of the edit controls. Open DetailView. cs and add the binding logic to the ViewDidShow() method: Adding navigation Add navigation from the master view so that when a park is selected, the detail view is displayed, showing the park. To add navigation, complete the following steps: Open MasterView. cs . create an event handler named ParkSelected . and assign it to the SelectedItemChanged event on MvxStandardTableViewSource . which was created in the ViewDidLoad() method: Within the event handler, invoke the ParkSelected command on MasterViewModel . passing in the selected park: Compile and run NationalParks. iOS . Selecting a park in the list view should now navigate you to the detail view, displaying the selected park. Implementing the edit view We now need to implement the last of the Views for the iOS app, which is the edit view. To implement the edit view, complete the following steps: Create a new ViewController instance named EditView . Open EditView. xib and arrange controls as in the layout screenshots. Add outlets for each of the edit controls. Open EditView. cs and add the data binding logic to the ViewDidShow() method. You should use the same approach to data binding as the approach used for the details view. Add an event handler named DoneClicked . and within the event handler, invoke the Done command on EditViewModel. protected void DoneClicked (object sender, EventArgs e) In ViewDidLoad() . add UIBarButtonItem to NavigationItem for EditView . and assign the DoneClicked event handler to it, as follows: Adding navigation Add navigation to two places: when New ( ) is clicked from the master view and when Edit is clicked on in the detail view. Lets start with the master view. To add navigation to the master view, perform the following steps: Open MasterView. cs and add an event handler named NewParkClicked . In the event handler, invoke the NewParkClicked command on MasterViewModel : In ViewDidLoad() . add UIBarButtonItem to NavigationItem for MasterView and assign the NewParkClicked event handler to it: To add navigation to the details view, perform the following steps: Open DetailView. cs and add an event handler named EditParkClicked . In the event handler, invoke the EditParkClicked command on DetailViewModel : In ViewDidLoad() . add UIBarButtonItem to NavigationItem for MasterView . and assign the EditParkClicked event handler to it: Refreshing the master view list One last detail that needs to be taken care of is to refresh the UITableView control on MasterView when items have been changed on EditView . To refresh the master view list, perform the following steps: Open MasterView. cs and call ReloadData() on parksTableView within the ViewDidAppear() method of MasterView : Compile and run NationalParks. iOS . You should now have a fully functional app that has the ability to create new parks and edit existing parks. Changes made to EditView should automatically be reflected in MasterView and DetailVIew . Considering the pros and cons After completing our work, we now have the basis to make some fundamental observations. Lets start with the pros: MvvmCross definitely increases the amount of code that can be reused across platforms. The ViewModels house the data required by the View, the logic required to obtain and transform the data in preparation for viewing, and the logic triggered by user interactions in the form of commands. In our sample app, the ViewModels were somewhat simple however, the more complex the app, the more reuse will likely be gained. As MvvmCross relies on the use of each platforms native UI frameworks, each app has a native look and feel and we have a natural layer that implements platform-specific logic when required. The data binding capabilities of MvvmCross also eliminate a great deal of tedious code that would otherwise have to be written. All of these positives are not necessarily free lets look at some cons: The first con is complexity you have to learn another framework on top of Xamarin, Android, and iOS. In some ways, MvvmCross forces you to align the way your apps work across platforms to achieve the most reuse. As the presentation logic is contained in the ViewModels, the views are coerced into aligning with them. The more your UI deviates across platforms the less likely it will be that you can actually reuse ViewModels. With these things in mind, I would definitely consider using MvvmCross for a cross-platform mobile project. Yes, you need to learn an addition framework and yes, you will likely have to align the way some of the apps are laid out, but I think MvvmCross provides enough value and flexibility to make these issues workable. Im a big fan of reuse and MvvmCross definitely pushes reuse to the next level. In this article, we reviewed the high-level concepts of MvvmCross and worked through a practical exercise in order to convert the national parks apps to use the MvvmCross framework and the increase code reuse. Resources for Article: Further resources on this subject: New Popular Posts We understand your time is important. Uniquely amongst the major publishers, we seek to develop and publish the broadest range of learning and information products on each technology. Every Packt product delivers a specific learning pathway, broadly defined by the Series type. This structured approach enables you to select the pathway which best suits your knowledge level, learning style and task objectives. As a new user, these step-by-step tutorial guides will give you all the practical skills necessary to become competent and efficient. Beginners Guide Friendly, informal tutorials that provide a practical introduction using examples, activities, and challenges. Essentials Fast paced, concentrated introductions showing the quickest way to put the tool to work in the real world. A collection of practical self-contained recipes that all users of the technology will find useful for building more powerful and reliable systems. Blueprints Guides you through the most common types of project youll encounter, giving you end-to-end guidance on how to build your specific solution quickly and reliably. Take your skills to the next level with advanced tutorials that will give you confidence to master the tools most powerful features. Accessible to readers adopting the topic, these titles get you into the tool or technology so that you can become an effective user. richardlung 2016-05-17 23:57:32 UTC 1 Im trying to create autolayout and autoresize collection view within a uitableview. so I have a picture and below it is text, which can be one line or more. But if they are in the same row, I want to get the same height. Currently, theyre somewhat working, but the height can be different for each cell in the same row. Also, Im getting constraint issues, but I think I setup the constraint correctly. Simulator Screen Shot May 17, 2016, 4.51.04 PM. png 480x852 12.9 KB jeremyd 2016-05-18 19:35:15 UTC 2 Insert a UIStackView inside your Table Cell, then set the cell content constraints to the Stack View. Not sure if there is a tutorial on it for Objective C, but there is a video series on it for Swift: Introducing Stack Views Series (Swift). richardlung 2016-05-18 22:18:56 UTC 3 Thanks, I tried adding stackview to the uitableview, and add the collectionview to the stackview. Im still getting uneven height, so it adds padding instead. (see the image on top) Although I was able to remove the constraint warnings by adding self. contentView setTranslatesAutoresizingMaskIntoConstraints:NO jeremyd 2016-05-19 02:01:52 UTC 4 My only other suggestion would be to play with each of the inserted contents constraint priorities, or make the collection views a set heightwidth and have the content set to aspect fit or fill. I wish auto layout was easier, but I find it to be one of the most difficult things to do. Takes a lot of trial and error. richardlung 2016-05-20 20:04:50 UTC 5 Yes. its really tricky. But I feel like Im really close already. I kind of get them to work (the column 2 and column 1 from my picture already using the same height), except the first column bound is smaller than the second one, and its adding padding on top and bottom. At least I want the top padding removed so I can align the picture. Powered by Discourse. best viewed with JavaScript enabled

No comments:

Post a Comment