Frage

Ich habe eine Top-Liste Ansicht in meinem aktuellen iPhone-App, die von Code bevölkert ist. Ich habe die Ansicht mit Interface Builder zusammengebaut, so dass es viel UILabels enthält.

Natürlich möchte ich nicht haben name1, name2 etc. Filialen in meiner Klasse, aber einen name[10] Array bevorzugen.

Ist es möglich, so zu tun, und jedes Element mit dem entsprechenden Etikett (oder einem anderen Interface Builder wie Ansicht) verbinden?

War es hilfreich?

Lösung

Sie können es in IB nicht tun, aber Sie können ein Array in Ihrer init Methode erstellen und fügen Sie alle Ihre Etiketten zu.

BTW, können Sie einig Tag zu jedem Etikett gesetzt und definieren Makro, darauf zuzugreifen. smth wie

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

Andere Tipps

Sie können dies natürlich tun mit Interface Builder, ist das Schlüsselwort IBOutletCollection. Was sie tut, ist im Grunde ein NSArray aus mehreren Interface Builder Stellen.

IBOutletCollection(UILabel) NSArray *myLabels;

Also das nächste, was würden Sie Ihre Etiketten in Interface Builder werden verbinden und dann können Sie das Array verwenden, um alle Etiketten zur Laufzeit zugreifen zu können.

Dieser Outlet Kollektionen mit getan werden kann, finden Sie unter href="https://stackoverflow.com/questions/4356612">.

Gehen Sie wie folgt eine Reihe von Filialen erstellen eine Verbindung mit IB-Elemente (hier Beispiel UIView, können Sie UILabel auch):

  • Erstellen Sie ein Array von IBOutlets
  • Fügen Sie mehrere UIElements (Views) in der Storyboard-Viewcontroller-Schnittstelle
  • Wählen Sie Viewcontroller (im Storyboard) und offene Verbindung Kontrolleur
  • Es gibt die Option ‚Outlet Kollektionen‘ in Verbindung Inspektor (Sie werden eine Reihe von Auslässen siehe dort)
  • Verbinden, wenn mit Ihren Interface-Elementen

-

class ViewController2: UIViewController {


    @IBOutlet var collection:[UIView]!


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

eingeben Bild Beschreibung hier

scroll top