Students Save 30%! Learn & create with unlimited courses & creative assets Students Save 30%! Save Now
Advertisement
  1. Code
  2. iOS SDK
Code

استكشاف متحكم شريط التبويب

by
Difficulty:BeginnerLength:LongLanguages:
This post is part of a series called Learn iOS SDK Development From Scratch.
Navigation Controllers and View Controller Hierarchies
Data Persistence and Sandboxing on iOS

Arabic (العربية/عربي) translation by ansgaradh (you can also view the original English article)

على الرغم من أن عناصر التحكم في التنقل تتيح للمستخدمين التنقل في المحتوى الهرمي أو البيانات المعقدة عن طريق إدارة كومة من وحدات التحكم في العرض ، فإن عناصر تحكم شريط علامات التبويب تدير مجموعة من وحدات التحكم في العرض التي لا ترتبط بالضرورة ببعضها البعض. في هذه المقالة ، سنستكشف أجهزة التحكم في شريط علامات التبويب بمزيد من التفصيل عن طريق إنشاء تطبيق tabbed من البداية.


المقدمة

 تعتبر فئة UITabBarController فئة فرعية أخرى UIViewController. بينما تتحكم أجهزة التحكم في التنقل بمجموعة من وحدات التحكم في العرض ذات الصلة ، تقوم عناصر تحكم شريط علامات التبويب بإدارة صفيف من وحدات التحكم في العرض التي ليس لها علاقة صريحة مع بعضها البعض

تعد تطبيقات الساعة والموسيقى على نظام التشغيل iOS مثالين رئيسيين لأجهزة التحكم في شريط علامات التبويب. تمامًا مثل أي فئة فرعية أخرى من UIViewController ، تقوم وحدة تحكم شريط علامات التبويب بإدارة نسخة UIView.

يتكون عرض وحدة تحكم شريط علامات التبويب من جهازي معاينة:

  • شريط علامة التبويب في أسفل العرض
  • عرض واحد من وحدات تحكم العرض تدير تحكم شريط علامات التبويب

قبل أن نبدأ

هناك عدد قليل من التحذيرات التي يجب أن تكون على دراية بها عند العمل مع وحدات تحكم شريط علامات التبويب. على الرغم من أن مثيلات UITabBar يمكنها عرض خمس علامات تبويب فقط ، يمكن لفئة UITabBarController إدارة عدد أكبر من وحدات التحكم في العرض. عندما تدير وحدة تحكم شريط علامات التبويب أكثر من خمس وحدات تحكم للعرض ، فإن علامة التبويب الأخيرة في شريط علامات التبويب تحمل العنوان المزيد.

 وحدات تحكم عرض إضافية يمكن الوصول إليها من خلال هذا التبويب، وأنه من الممكن حتى لتحرير وضع علامات التبويب في شريط علامات التبويب.

على الرغم من أن عناصر تحكم شريط علامات التبويب تدير طريقة عرض ، إلا أنه ليس من المفترض أن يتفاعل التطبيق الخاص بك مباشرة مع عرض عنصر تحكم شريط التحكم.

إذا قررت أن وحدة تحكم شريط علامات التبويب هي الاختيار الصحيح للتطبيق ، يجب أن تكون وحدة تحكم شريط الجدولة هي وحدة تحكم العرض الجذري في نافذة التطبيق. بمعنى آخر ، يكون عرض الجذر لإطار التطبيق دومًا هو عرض عنصر تحكم شريط علامات التبويب. يجب عدم تثبيت وحدة تحكم شريط الجدولة أبداً كطفل من وحدة تحكم عرض آخر. هذا أحد الاختلافات الأساسية مع وحدات تحكم التنقل.


مكتبة مترجمة

في هذه المقالة ، نعاود زيارة تطبيق المكتبة الذي أنشأناه في المقالة السابقة. من خلال القيام بذلك ، يمكننا إعادة استخدام عدة صفوف والحصول على السرعة بشكل أسرع. بالإضافة إلى ذلك ، سيظهر لك أن أجهزة التحكم في التنقل ووحدات تحكم شريط التبويب مختلفة تمامًا ويتم استخدامها في حالات مختلفة وحالات الاستخدام.

سيتم تسمية التطبيق الذي سنبنيه في هذا الدرس باسم Tabbed Library وسوف يعتمد على فئة UITabBarController. بينما نقوم بإنشاء تطبيق Tabbed Library ، ستلاحظ أن استخدام وحدة تحكم شريط علامات التبويب يفرض التطبيق في نموذج واجهة مستخدم محدد للغاية يسمح بمرونة قليلة. تعتبر أجهزة التحكم شريط علامات التبويب مفيدة بشكل لا يصدق ، ولكن عليك أن تقبل أنها تضع قيود على واجهة المستخدم للتطبيق الخاص بك إلى حد ما.

افتح Xcode ، قم بإنشاء مشروع جديد (File> New> Project ...) ، وحدد قالب التطبيق الخالي.

اسم المشروع Tabbed Library ، وتعيين اسم المؤسسة ومعرّف الشركة ، وتعيين الأجهزة على iPhone. أخبر Xcode حيث تريد حفظ المشروع واضغط على Create.

على الرغم من أن Xcode يحتوي على قالب التطبيق Tabbed ، إلا أنني أفضل أن أبدأ بقالب تطبيق فارغ حتى تفهم كيف تتلاءم القطع المختلفة من اللغز معًا. ستلاحظ أن وحدات تحكم شريط علامات التبويب ليست معقدة.


أخذ السبق

عند الانتهاء من تطبيق Tabbed Library ، ستقوم وحدة تحكم شريط علامات التبويب الخاصة بالتطبيق بإدارة وحدات تحكم بعرض ستة. بدلاً من إنشاء كل فئة وحدة تحكم عرض من الصفر ، سنقوم خداع قليلاً عن طريق إعادة استخدام فئات وحدة تحكم العرض التي قمنا بإنشائها في المقالة السابقة.

بالإضافة إلى ذلك ، سنقوم بإنشاء عدة نسخ من نفس فئة وحدة تحكم العرض لإنقاذنا بعض الوقت. الهدف من هذه المقالة ليس إنشاء فئات تحكم وحدة تحكم العرض. في هذه المرحلة ، يجب أن تكون على دراية بكيفية عمل ذلك.

قم بتنزيل شفرة المصدر من المقالة السابقة وافتح مشروع Xcode الذي تم تضمينه في الملفات المصدر في نافذة Finder جديدة. ابحث عن فئات TSPAuthorsViewController و TSPBooksViewController و TSPBookCoverViewController واسحبها إلى مشروعك الجديد. تأكد من نسخ الملفات إلى المشروع الجديد عن طريق تحديد مربع الاختيار المسمى نسخ العناصر إلى مجلد المجموعة المقصودة (إذا لزم الأمر) ولا تنسَ إضافة الملفات إلى هدف مكتبة Tabbed.

بالإضافة إلى هذه الفئات الثلاث ، نحتاج أيضًا إلى نسخ مجلد الموارد ، الذي يحتوي على Books.plist وملفات الصور ، إلى مشروعنا الجديد. اسحب المجلد المسمى الموارد إلى مشروعنا واستخدم نفس الإعدادات التي استخدمناها لنسخ ملفات الصف. نحن الآن جاهزون لتفعيل تحكم شريط علامات التبويب الخاص بالتطبيق ونقوم بملئه بوحدة تحكم العرض الأولى.


إضافة وحدة تحكم شريط Tab

إضافة تحكم شريط علامات التبويب أمر سهل. افتح لوحة العمل الرئيسية للمشروع ، Main.storyboard. انتظر دقيقة. أين هي لوحة العمل الخاصة بي؟ نظرًا لأننا اخترنا نموذج التطبيق الخالي ، لم تعطنا Xcode لوحة القصة.

إضافة القصة المصورة

حدد New> File ... من قائمة File واختر Storyboard من فئة واجهة مستخدم iOS على اليمين.

قم بتعيين عائلة الأجهزة إلى iPhone واسم لوحة العمل الرئيسية. ليس هناك حاجة لإضافة ملحق .storyboard. سيضيف Xcode ذلك لك.

يجب علينا أيضًا إخبار Xcode أنه يحتاج إلى استخدام Main.storyboard كواجهة رئيسية للتطبيق. حدد المشروع في Project Navigator ، واختر الهدف Tabbed Library من قائمة الأهداف ، واضبط Main Main الواجهة الرئيسية أو Main.storyboard.

قبل أن نبدأ العمل مع لوحة العمل ، نحتاج إلى تحديث التطبيق الحالي للتطبيق: didFinishLaunchingWithOptions: in the TSPAppDelegate class. افتح TSPAppDelegate.m وقم بتحديث التطبيق كما هو موضح أدناه.

يمكنك إنشاء تطبيقات iOS بدون لوحات نصية ، ولكن هذا يعني أنك بحاجة إلى إنشاء إطار التطبيق الخاص بك بشكل صريح ، وهو ما رأيته في تنفيذ التطبيق: didFinishLaunchingWithOptions :. ومع ذلك ، عند العمل باستخدام القصص المصورة ، يمكنك ببساطة إرجاع YES وتقوم لوحة العمل بعمل الباقي.

إضافة وحدة تحكم شريط Tab

افتح Main.storyboard واسحب مثيل UITabBarController من مكتبة object على اليمين. بشكل افتراضي ، تأتي وحدة تحكم شريط علامات التبويب مع اثنين من وحدات تحكم العرض. ومع ذلك ، أريد توضيح كيفية إضافة وحدات التحكم في العرض إلى وحدة تحكم شريط علامات التبويب يدويًا ، لذا حدد وحدات التحكم في العرض - وليس وحدة تحكم شريط علامات التبويب - واحذفها من لوحة العمل.

إذا قمت بتشغيل التطبيق في iOS Simulator ، يجب أن يكون شريط علامات التبويب في الأسفل وخلفية سوداء. قد يبدو هذا غير مهم ، لكنه يظهر كيف تعمل وحدة تحكم شريط علامات التبويب. تدير وحدة تحكم شريط علامات التبويب مصفوفة من وحدات التحكم في العرض ، تشبه كيفية إدارة وحدة تحكم التنقل في كومة من وحدات التحكم في العرض.

ما نحتاج إلى القيام به هو إضافة عدد قليل من وحدات التحكم في العرض إلى لوحة العمل وإضافتها إلى خاصية viewControllers لوحدة تحكم شريط علامات التبويب. دعونا نرى كيف يعمل هذا.

مضيفا عرض وحدات تحكم

قم بسحب مثيل UITableViewController من مكتبة الكائنات إلى مساحة العمل وتعيين الصف الخاص به إلى TSPAuthorsViewController في Identity Inspector. حدد عرض جدول وحدة تحكم العرض وقم بتعيين عدد خلايا النموذج الأولي على 0 في مفتش السمات كما فعلنا في البرنامج التعليمي السابق.

لإضافة وحدة تحكم عرض الكتّاب إلى صفيفات تحكم عرض عنصر تحكم شريط التحكم ، اسحب من جهاز تحكم شريط علامات التبويب إلى وحدة تحكم عرض الكتّاب أثناء الضغط على مفتاح Control. حدد وحدات التحكم في العرض - ضمن فئة "شريحة العلاقة" —من القائمة التي تظهر.

لا تعتبر أداة تحكم شريط علامات التبويب بعلامة تبويب واحدة مفيدة لذلك لنقم بإضافة وحدة تحكم أخرى للعرض إلى هذا المزيج. قم بسحب مثيل UITableViewController آخر من "مكتبة الكائنات" ، قم بتعيين الصف الخاص به إلى TSPBooksViewController ، وقم بتعيين عدد خلايا Prototype إلى 0. قم بإنشاء علاقة العلاقة كما فعلنا مع وحدة تحكم عرض المؤلفين.

إضافة مثيل UIViewController إلى مساحة العمل وتعيين الصف الخاص به إلى TSPBookCoverViewController في "المفتش الهوية". إضافة مثيل UIImageView إلى وحدة تحكم العرض ، كما فعلنا في المقالة السابقة ، وتوصيله بمنفذ bookCoverView لوحدة تحكم العرض. إنشاء علاقة segue مع تحكم شريط علامات التبويب كما فعلنا لوحدات تحكم عرض الجدول.

يمكنك فقط إنشاء شرائح عندما لا يتم تصغير مساحة العمل ، الأمر الذي قد يمثل مشكلة في بعض الأحيان. ومع ذلك ، يمكنك أيضًا إنشاء اتصالات ، مثل segues ، في لوحة التجول على اليمين. هذا غالبا ما يكون أسهل بكثير وأقل شبقا.

بناء وتشغيل التطبيق. في هذه المرحلة ، يحتوي شريط علامات التبويب على ثلاث علامات تبويب. يؤدي النقر على علامة تبويب إلى عرض وحدة التحكم في العرض المرتبطة بعلامة التبويب.

هل حاولت التنصت على اسم المؤلف في وحدة تحكم عرض المؤلفين؟ ولماذا تظهر لنا أداة عرض عرض الكتب عرضًا فارغًا للجدول؟ حان الوقت لبعض التصحيح.

إصلاح وحدة تحكم مشاهدة المؤلفين

عند النقر فوق اسم مؤلف في وحدة تحكم عرض الكتّاب ، تعطل التطبيق. أول شيء يجب عليك فعله عندما تواجه حادث تحطم هو فحص وحدة تحكم Xcode. هذا ما يقول لي:

لا يصعب فك تشفير الرسالة التي تعرض Xcode في وحدة التحكم. نطلب من وحدة التحكم في العرض إجراء عملية segue بمعرّف BooksViewController ، لكن هذا segue غير موجود. والنتيجة هي تحطم.

يسهل إصلاح هذا الخطأ من خلال تضمين وحدة تحكم عرض المؤلفين في وحدة تحكم في التنقل ، مما يؤدي إلى إنشاء segue إلى مثيل لفئة TSPBooksViewController ، وتسمية segue BooksViewController. أترك هذا الأمر لك كمهمة منذ فعلنا هذا في المقالة السابقة.

المشكلة الأكثر أهمية في هذا المثال هي فهم أن وحدات التحكم في العرض الثلاثة المرتبطة بجهاز تحكم شريط الجدولة لا تتصل مع بعضها البعض. الفكرة وراء جهاز تحكم شريط علامات التبويب وجهاز تحكم الملاحة مختلفة جدا. تحافظ وحدة التحكم في التنقل على صفيف من وحدات التحكم في العرض ، مكدس التنقل. تحتوي وحدات التحكم في العرض في مكدس التنقل على علاقة ضمنية مع بعضها البعض بمعنى أنها جزء من نفس حزمة التنقل.

كما تقوم وحدة تحكم شريط علامات التبويب بإدارة صفيف من وحدات التحكم في العرض ، إلا أن وحدات التحكم في العرض لا تعرف عن بعضها البعض. انهم لا يستطيعون التواصل مع بعضهم البعض من خلال تحكم شريط علامات التبويب. في المقالة السابقة ، قمنا بتمرير البيانات من وحدة تحكم عرض الكتّاب إلى وحدة تحكم عرض الكتب عندما يتم النقر على مؤلف. لا ينطبق هذا النمط على وحدة تحكم شريط علامات التبويب. بالطبع ، يمكننا تنفيذ حل لإظهار المستخدم وحدة تحكم عرض الكتب عندما يتم استغلال المؤلف في وحدة تحكم عرض الكتّاب ، ولكن من المهم أن تفهم أن هذا ليس هدف وحدة تحكم شريط الجدولة.

تُعد تطبيقات الساعة والموسيقى على نظام التشغيل iOS أمثلة جيدة لكيفية استخدام أداة تحكم شريط علامات التبويب. وحدات التحكم في العرض التي تديرها وحدة تحكم شريط الجدولة في تطبيق الموسيقى لا علاقة لها مع بعضها البعض بصرف النظر عن حقيقة أنها تعرض الأغاني.

قبل المتابعة ، تأكد من أنك تفهم مفاهيم وحدة التحكم في التنقل ووحدة تحكم شريط علامات التبويب لأنها مهمة لاحقًا في هذه السلسلة.


إضافة وحدة تحكم أخرى في طريقة عرض الجدول

لنقم بإضافة وحدة تحكم في طريقة العرض الرابعة إلى وحدة تحكم شريط علامات التبويب التي تعرض كل كتاب في Books.plist. إنشاء فئة فرعية جديدة UITableViewController وتسميتها TSPAllBooksViewController.

ستقوم وحدة التحكم في العرض هذه باستخراج كل الكتب من Books.plist وعرضها أبجديًا في عرض الجدول. افتح TSPAllBooksViewController.m وأضف كتب ملكية جديدة من نوع NSArray إلى امتداد الفئة في الجزء العلوي.

في طريقة viewDidLoad في وحدة التحكم في العرض ، فإننا نستدعي extractBooks ، وهي طريقة مساعدة سننفذها قريبًا. عموما أحاول أن أبقي viewDidLoad موجزة قدر الإمكان عن طريق التفاف المهام في أساليب المساعد مثل extractBooks. هذا يجعل من السهل قراءة التعليمات البرمجية وأكثر صيانتها.

دعونا نفحص تنفيذ extractBooks. نبدأ بإنشاء مجموعة قابلة للتغيير والتي سنضيف إليها كتب كل مؤلف في قائمة الخصائص. يجب أن يكون السطران التاليان مألوفين إذا قرأت المقالة السابقة. نطلب حزمة التطبيق لمسار ملف Books.plist واستخدامه لتحميل محتويات Books.plist إلى صفيف يسمى المؤلفين.  ثم نكرر ذلك على مجموعة من المؤلفين ونضيف كتب كل مؤلف إلى المجموعة القابلة للتغيير التي أنشأناها في وقت سابق. لفرز مصفوفة الكتب ، نقوم بإنشاء واصف فرز بمفتاح العنوان. بعد فرز الكتب حسب العنوان ، يتم إنشاء صفيف جديد ، ينتج ، عن طريق فرز الصفيف المتحرك باستخدام واصف الفرز. نعرض قائمة الكتب المصنفة.

يتم استخدام واصفات الفرز ، مثيلات NSSortDescriptor ، لفرز مجموعات من الكائنات ، مثل المصفوفات ، عن طريق تحديد الخاصية التي يجب استخدامها لمقارنة كائنين من المجموعة. يمكنك تجاهل هذا الجزء من تطبيق extractBooks بأمان إذا لم يكن واضحًا تمامًا ، لأنه ليس مهمًا في نطاق هذا الدرس.

تشبه تطبيقات بروتوكول UITableViewDataSource إلى حد كبير ما رأيناه سابقًا في هذه السلسلة. نتوقف لحظة لفحص تنفيذ كل طريقة أدناه.

كما رأينا في الدرس حول عرض الجدول ، نحتاج إلى تعريف معرف إعادة استخدام الخلية ونحتاج أيضًا إلى تسجيل فئة لمعرّف إعادة استخدام الخلية.

مع فئة وحدة تحكم عرض جديدة جاهزة للاستخدام ، العودة إلى لوحة العمل ، اسحب مثيل UITableViewController من مكتبة الكائنات ، وتعيين الصف الخاص به إلى TSPAllBooksViewController. مع تحديد عرض الجدول ، قم بتعيين عدد خلايا النموذج إلى 0 في Attributes Inspector. قبل تشغيل التطبيق في iOS Simulator ، قم بإنشاء segue العلاقة بين متحكم شريط علامات التبويب ووحدة تحكم عرض الجدول التي أضفناها للتو.

بناء وتشغيل المشروع لرؤية نتيجة عملنا الشاق. إذا كان لديك اهتمام بالتفاصيل ، فقد تكون لاحظت أن عنوان علامة التبويب الرابعة لا يظهر إلا بعد تحديد علامة التبويب. يمكنك تخمين لماذا هذا؟


ترى... عدم التحميل

سبب هذا quirk غريبة في الواقع بسيط جدا. بشكل عام ، لا يتم تحميل المشاهدة في الذاكرة حتى تكون ضرورية للغاية. يعني هذا عادةً أنه يتم تحميل العرض في الذاكرة عندما يكون على وشك عرضه على المستخدم.

عند تشغيل تطبيق Tabbed Library ، يتم تحديد علامة التبويب الأولى بشكل افتراضي. طالما لم يتم تحديد علامة التبويب الرابعة — بواسطة المستخدم أو برمجيًا — فلا حاجة إلى تحميل طريقة عرض وحدة التحكم في العرض الرابعة ونتيجة لذلك ، لا يتم استدعاء طريقة viewDidLoad حتى يتم تحديد علامة التبويب الرابعة ، وهذا بدوره يعني أنه لم يتم تعيين العنوان حتى يتم تحديد علامة التبويب الرابعة.

الحل بسيط. أفضل طريقة هي تعيين عنوان وحدة تحكم العرض عند تهيئة وحدة تحكم العرض. إذا قمنا بتعيين العنوان في طريقة init للفصل ، يمكننا أن نكون على ثقة من أن عنوان وحدة تحكم العرض قد تم ضبطه في الوقت المناسب.

افتح TSPAllBooksViewController.m وأضف طريقة باسم initWithCoder: كما هو موضح أدناه. يتم استدعاء هذا الأسلوب بواسطة نظام التشغيل لإنشاء مثيل للفئة.

هذا هو أيضا الوقت المناسب لفحص تدفق أسلوب init نموذجي. تبدأ طريقة التهيئة عادةً باستدعاء طريقة init الخاصة بالفئة superclass ، في هذه الحالة مع WintCoder:. لقد أكدت على أهمية ذلك عندما ناقشنا طريقة viewDoadLoad في وقت سابق من هذه السلسلة. يتم تعيين نتيجة [super initWithCoder: aDecoder] إلى self ، مثيل الفئة التي نعمل بها.

في الخطوة التالية ، نتحقق من أن الذات ليست معدومة. إذا تم ضبط الذات - لا شيء - فقد حان الوقت لتكوين مثيل الطبقة بشكل أكبر. يجب دائماً إرجاع أسلوب التهيئة إما مثيل فئة أو لا شيء إذا حدث خطأ ما.

في العبارة if في initWithCoder: قمنا بتعيين خاصية عنوان وحدة تحكم العرض لحل المشكلة التي ناقشتها منذ لحظة.

كان هذا الكثير من النظرية لإصلاح مشكلة تافهة. ومع ذلك ، فإن التفسير أعلاه هو مقدمة جيدة لعنصر آخر مهم من عناصر تحكم شريط علامات التبويب ، وعناصر شريط علامات التبويب. في الوقت الحالي ، تظهر علامات التبويب في شريط علامات التبويب فقط عنوان كل وحدة تحكم في العرض أو ، في حالة وحدات تحكم vier الثاني والثالث ، عنوان افتراضي للعنصر. في معظم التطبيقات ، تعرض علامات التبويب أيضًا رمزًا صغيرًا يشير إلى وظيفة أو هدف وحدة تحكم العرض أسفل علامة التبويب. دعونا نرى كيفية تنفيذ هذا.


عناصر شريط Tab

في الدرس السابق ، كتبت أن كل وحدة تحكم في العرض في مكدس تنقل يحتفظ بمرجع إلى وحدة التحكم في التنقل التي تدير المجموعة وينطبق الشيء نفسه على وحدات التحكم في العرض التي يتم إدارتها بواسطة وحدة تحكم شريط علامات التبويب. تحتفظ وحدة التحكم في العرض التي تديرها وحدة تحكم شريط علامات التبويب بمرجع إلى وحدة تحكم شريط علامات التبويب في خاصية tabBarController الخاصة بها.

بالإضافة إلى هذه الخصائص ، تحتوي وحدة تحكم في العرض أيضاً على خاصية tabBarItem ، مثيل فريد لفئة UITabBarItem. يتم استخدام هذه الخاصية عندما تكون وحدة التحكم في العرض تابعة لوحدة تحكم شريط الجدولة. يحتوي عنصر شريط علامة التبويب على عنوان وصورة وعلامة. العلامة هي مجرد عدد صحيح يمكن استخدامه لتحديد عنصر شريط علامات التبويب في شريط علامات التبويب. بشكل افتراضي ، يتم توريث عنوان عنصر شريط علامة التبويب من خاصية عنوان وحدة تحكم العرض ، ولهذا السبب تحمل علامة التبويب الأولى والأخيرة في تطبيق Tabbed Library عنوان وحدة تحكم العرض الخاصة بها.

افتح TSPAuthorsViewController.m وأضف طريقة باسم initWithCoder: كما هو موضح أدناه.

نقوم بإنشاء عنصر شريط علامات التبويب وتعيينه إلى خاصية tabBarItem لوحدة تحكم العرض. يقبل مُهيئ فئة UITabBarItem عنوان (NSString) ، صورة (UIImage) وعلامة (NSInteger). قبل إنشاء المشروع وتشغيله ، قم بتنزيل الملفات المصدر لهذا الدرس واسحب icon-authors.png و icon-authors@2x.png إلى مشروعك. كما قد تتذكر ، فإن الملف مع  2x@ يستهدف الأجهزة مع عرض شبكية العين ، في حين أن الملف بدون  2x@ يستهدف أجهزة غير شبكية العين.

لاحظ أنه ليس من الضروري تحديد امتداد الملف لملف الصورة عند استخدام طريقة الفصل imagenamed: من UIImage. بشكل عام ، لا تحتاج إلى تحديد إصدار الملف - شبكية العين أو غير شبكية العين - للاستخدام. استنادًا إلى اسم الملف وأجهزة الجهاز ، يحدد نظام التشغيل الإصدار الذي يستخدمه.

قمت أيضًا بنقل تعيين العنوان إلى initWithCoder: الطريقة كما فعلنا في فئة TSPAllBooksViewController. قم بتشغيل التطبيق مرة أخرى لرؤية النتيجة.

يمكننا القيام بنفس الشيء بالنسبة لفئة TSPAllBooksViewController. افتح MTAllBooksViewController.m وقم بتحديث initWithCoder: الطريقة كما هو موضح أدناه.

بالإضافة إلى تعيين عنوان وحدة تحكم العرض ، قمنا بتعيين خاصية tabBarItem الخاصة به. ومع ذلك ، فإننا نستخدم هذه المرة initWithTabBarSystemItem: tag: لتكوين عنصر شريط علامات التبويب. يمكنك استخدام هذه الطريقة إذا كنت ترغب في استخدام عنصر شريط علامة تم توفيره للنظام. تحدد الوسيطة الأولى من هذه الطريقة ، UITabBarSystemItem ، كل من عنوان وصورة عنصر شريط علامات التبويب.

من الممكن أيضًا منح عنصر شريط علامة عنصر قيمة الشارة كما هو موضح في التنفيذ السابق لبرنامج initWithCoder :. من المتوقع أن تكون قيمة الشارة نسخة NSString.

عند العمل مع وحدات تحكم شريط علامات التبويب ، ضع في اعتبارك أنه وحدة تحكم العرض الجذر لكل علامة تبويب تحدد كيفية ظهور عنصر شريط علامة التبويب ذي الصلة. على سبيل المثال ، إذا كانت وحدة تحكم شريط علامات التبويب تدير وحدة تحكم في التنقل مع عدد من وحدات التحكم في العرض ، فذلك هو عنصر شريط علامة التبويب لوحدة تحكم عرض الجذر في وحدة التحكم في المستعرض والتي يستخدمها شريط علامة تبويب وحدة تحكم شريط التحكم. يحتوي فئة UITabBarItem على بعض الطرق الأخرى لتخصيص شكل ومظهر عنصر شريط التبويب بشكل أكبر.


عرض المزيد من وحدات التحكم

قبل إنهاء هذه المقالة ، أود أن يظهر لك كيف يبدو شريط علامات التبويب عندما تدير وحدة تحكم شريط الجدولة أكثر من خمس وحدات تحكم في العرض. كما ذكرت سابقًا ، يتم عرض خمس علامات تبويب فقط في أي وقت ، ولكن توفر وحدة تحكم شريط الجدولة دعمًا لإدارة أكثر من خمس وحدات تحكم في عرض الأطفال.

افتح لوحة العمل الرئيسية وأضف حالتين إضافيتين من UITableViewController. قم بإنشاء واجهة علاقة لكل وحدة تحكم في عرض الجدول وتشغيل التطبيق في iOS Simulator لمشاهدة النتيجة.

وحدات التحكم في العرض الإضافية التي أضفناها ليست مفيدة جدًا ، ولكنها تُظهر كيفية قيام وحدة تحكم شريط علامات التبويب بإدارة أكثر من خمس وحدات تحكم في عرض الأطفال. توفر عناصر تحكم شريط الجدولة الوصول إلى وحدة تحكم العرض الخامسة والسادسة لوحدة تحكم شريط علامات التبويب. حتى أن المستخدم لديه القدرة على تحرير أوضاع وحدات التحكم في العرض في شريط علامات التبويب.


الاستنتاج

من المهم أن نفهم أن كل من فئتي UITabBarController و UINavigationController يمثلان نموذج واجهة مستخدم فريد. توضح هذه المقالة أيضًا أن عناصر تحكم شريط علامات التبويب لا يصعب إتقانها بمجرد فهم المكونات المعنية.

في المقالة التالية ، سنلقي نظرة على استمرارية البيانات على نظام التشغيل iOS والخيارات المتاحة لك كمطور.

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.