2017-11-28 4 views
1

Ich habe eine Outlet-Sammlung von DayViews, die benutzerdefinierte UIView Objekte sind. In meinem 'ClientTaskVC' Ich möchte in der Lage sein, DayView zu referenzieren und in der Lage sein zu erreichen und seine UIElements, jeder DayView hat einen DayLabel, dateLabel und checkmarkImg. Ich bin mir nicht sicher, ob es wirklich eine gute Idee ist, alle Labels/Bildansichten in Outlet-Sammlungen zu platzieren, da es schwieriger zu verfolgen ist und falsch aussieht. In meinem ersten Bild habe ich detailliert beschrieben, wie dies im Code aussehen würde, sowie meinen View-Controller mit allen meinen Ansichten als Referenz anzuzeigen.Swift 4 - Wie bekomme ich die UI-Elemente von einer benutzerdefinierten UIView in einer Outlet-Sammlung?

Erstes Bild: outletcollections

Was ich zu tun versucht, die Ausgänge der tatsächlichen DayView benutzerdefinierte Klasse hinzufügen, für alle Etiketten und Bild, aber wenn ich die Ausgänge angeschlossen es nur zu einem DayView verbinden konnte und nicht wiederverwendbar Für jedes einzelne DayView-Objekt auf dem Bildschirm halte ich es nicht für den richtigen Ansatz, eine Outlet-Sammlung in der benutzerdefinierten DayView-Klasse zu erstellen, um auf die einzelnen Ansichtenbeschriftungen zu verweisen. Jetzt bin ich mir nicht mehr sicher, wie ich dieses Problem angehen soll

Zweites Bild: outletsDayViewClass

ist ideal genau das, was ich möchte 'ClientTaskVC' meine Steckdose Sammlung haben:

@IBOutlet var dayViews: [DayView]! 

und seine UIElements nennen (ex: dayViews [i] .dayLbl.text) wie folgt:

for i in 0 ..< dayViews.count { 
     let date = Date().addingTimeInterval(TimeInterval(86400 * i)) 
     let dateFormatter = DateFormatter() 
     dateFormatter.dateFormat = "dd" 

     // See how the dayViews label, 'dayLbl' is being referenced 
     dayViews[i].dayLbl.text = dateFormatter.string(from: date) 
     dayViews[i].dayLbl.textAlignment = .center 
    } 

Jede Hilfe, wie Sie dies mit Outlet-Sammlungen tun können, wäre sehr willkommen. Vielen Dank.

+0

Mögliche Duplikat [Link kann nicht Sammlung zum Auslass in XCode9] (https://stackoverflow.com/questions/46384857/cant-link-to-outlet-collection-in-xcode9) –

+0

Sieht für mich wie ein Fall für eine UICollectionView aus. –

+0

@AuRis Der Grund, warum ich UICollectionView nicht verwendet habe, ist, dass es immer nur 7 Ansichten geben wird, niemals mehr oder weniger. Mir wurde gesagt, dass dies der optimalste Ansatz ist. – Jumpman987

Antwort

1

Schließen Sie die ganze Sicht als Auslass:

@IBOutlet weak var dayView: UIView! 

könnte Sie Schleife durch alle DayView ‚s Subviews etwa so:

var dayViewSubviews: UIView = [] 

for subView in dayView { 
    dayViewSubviews.append(subView) 
} 
Verwandte Themen