سؤال

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

من الواضح أنني لا أحب أن يكون name1, name2, ، إلخ. منافذ في صفي، ولكنها تفضل name[10] مجموعة مصفوفة.

هل من الممكن القيام بذلك، وتوصيل كل عنصر إلى الملصق المناسب (أو أي منشئ واجهة أخرى مثل الرأي)؟

هل كانت مفيدة؟

المحلول

لا يمكنك القيام بذلك في IB، ولكن يمكنك إنشاء صفيف في init طريقة وإضافة جميع الملصقات الخاصة بك إليها.

راجع للشغل، يمكنك ضبط بعض العلامة على كل تسمية وتحديد ماكرو للوصول إليها. smth مثل

#define NAME[TAG] (UILabel*)[self.view viewWithTag:TAG]

نصائح أخرى

يمكنك بالطبع القيام بذلك مع Builder واجهة، الكلمة الرئيسية هي IBOutletCollection. وبعد ما تفعله هو أساسا nsarray من منافذ منشئ واجهة متعددة.

IBOutletCollection(UILabel) NSArray *myLabels;

لذا فإن الشيء التالي سيقوم بتوصيل الملصقات الخاصة بك في منشئ واجهة وبعد ذلك يمكنك استخدام الصفيف للوصول إلى جميع الملصقات في وقت التشغيل.

يمكن القيام بذلك باستخدام مجموعات منفذ، وانظر هذا السؤال ذات الصلة.

اتبع هذه الخطوات لإنشاء صفيف من المنافذ التي توصلها بها عناصر IB (هنا مثال على UIView, ، يمكنك استخدام UILabel ايضا):

  • إنشاء مجموعة من iboutlets
  • إضافة عدة أويل (طرق عرض) في واجهة ViewController الخاصة بك
  • حدد ViewController (في لوحة العمل) وفتح اتصال الاتصال
  • هناك خيار "مجموعات منفذ" في مفتش الاتصال (سترى مجموعة من المنافذ هناك)
  • الاتصال إذا مع عناصر واجهة الخاص بك

-

class ViewController2: UIViewController {


    @IBOutlet var collection:[UIView]!


    override func viewDidLoad() {
        super.viewDidLoad()
    }
}

enter image description here

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top