
ربما استخدمت Storyboard أو XIB لواجهات التخطيط؟ لا بأس بالتخطيط من الشفرة ، ولكن في بعض الأحيان يكون من الأسهل فهم كيفية عمل أحد مكونات الواجهة من خلال رؤيتها وعدم قراءتها. في هذا المنشور ، أريد أن أناقش الحاجة إلى استخدام المعدل الخاص لـ IBOutlet.
من غير المحتمل أن يفاجأ المطورون الذين يكون تغليف IBOutlet واضحًا لهم ، ولكن المسح في نهاية المقالة قد يكون مثيرًا للاهتمام.
لنفترض أنك ستنشئ IBOutlet (رابط إلى طريقة عرض من لوحة العمل) لأي من UILabel الخاص بك. عند السحب باستخدام الماوس ، ينشئ Xcode بعناية شيئًا مثل
@IBOutlet weak var myLabel: UILabel!
لفترة طويلة ، اعتبرت أن هذا التصميم هو الأمثل ، حتى سأل زميلي لماذا لا يكون برنامج IBOutlet الخاص بك خاصًا؟
في الواقع ، لماذا يجب أن أترك جميع IBOutlets قابلة للوصول من الخارج؟
تخيل مشكلة كلاسيكية - لدينا خلية ، على سبيل المثال ، يتم عرض جهة اتصال شخص ما
import UIKit class ContactCell: UITableViewCell { @IBOutlet private weak var nameLabel: UILabel! @IBOutlet private weak var positionLabel: UILabel! override func awakeFromNib() { super.awakeFromNib() } func setupCell(withContact contact: Contact) { nameLabel.text = contact.name positionLabel.text = contact.position } }
من خلال إضافة خاص إلى IBOutlet المألوف ، يمكننا ضمان عدم تعيين الحقول المحددة للخلية من فئة أخرى. يمكن أن يكون هذا مفيدًا بشكل خاص أثناء العمل الجماعي ، عندما يحاول شخص ما ، من خلال الإهمال / ضيق الوقت / الغباء (التسطير حسب الضرورة) ، تعيين الألوان أو النص أو بعض الخصائص الأخرى لتسميات الخلايا مباشرة في طريقة عرض الجدول (_: cellForRowAt :) .
تخيل أن خلية أو ViewController بأكمله يحتوي على العديد من IBOutlets ، والتي تحتوي على الكثير من إعدادات العرض. أليس من الأسهل تأمين نفسك من خلال إضافة خاص بدلاً من البحث عن سبب تغير مظهر العنصر فجأة أو ظهور أداة التعرف على الإيماءات من مكان يحدد سلوكًا غير متوقع؟
ملاحظة: إذا كنت ترغب بعد القراءة في استخدام خاص لـ IBOutlets ، فببساطة يمكنك الحصول على قصاصات لهذا في Xcode.
فيما يلي استطلاع رأي ، إذا كنت تريد التعليق على خيار إجابتك ، فمرحبًا بالتعليق.