Finden Sie UILabel in UIView in Swift
Ich versuche, meine UILabels in meinem superview meiner UIViewControllers.
Das ist mein code:
func watch(startTime:String, endTime:String) {
if superview == nil {println("NightWatcher: No viewcontroller specified");return}
listSubviewsOfView(self.superview!)
}
func listSubviewsOfView(view: UIView) {
var subviews = view.subviews
if (subviews.count == 0) { return }
view.backgroundColor = UIColor.blackColor()
for subview in subviews {
if subview.isKindOfClass(UILabel) {
//do something with label..
}
self.listSubviewsOfView(subview as UIView)
}
}
Dies ist, wie es empfohlen wird, um in Objective-C, aber in Swift habe ich nichts bekommen, aber UIViews und CALayer. Ich habe definitiv UILabels in der Ansicht, dass geliefert wird, an dieser Methode. Was bin ich?
Den Anruf in meinem UIViewController:
NightWatcher(view: self.view).watch("21:00", endTime: "08:30") // still working on
- Getestet habe ich dieses mit Xcode 6b6 und es funktioniert: ich bin in der Lage zu finden, ein UILabel innerhalb einer UIView, dass ist eine Untersicht meiner viewController den Blick. Verwenden Sie Xcode 6b6? Verwenden Sie ein Storyboard? Wann/wie rufst du diese Methode?
- Vielen Dank für Ihre Antwort. Ich benutze Xcode6b5, Storyboard. Die Methode wird in einem separaten nicht-UI-Klasse und ich nenne es aus meiner UIViewController.
- In
watch:
, was Sie bekommen, wenn Sie anrufenlistSubviewsOfView(view)
stattlistSubviewsOfView(self.superview!)
? - Ich habe eine variable in meiner Klasse aufgerufen: var superview:UIView?. Ich es nicht nennen, als 'Ansicht'. Die superview ist also das 'selbst.Ansicht'
Du musst angemeldet sein, um einen Kommentar abzugeben.
Funktionale Programmierung Konzepte, die Sie um dies zu erreichen, viel einfacher.
Value of type 'UIView' has no member 'flatMap'
Hier ist eine version, die zurück
Array
alleUILabel
Ansichten, in welcher Ansicht Sie übergeben:Dann können Sie Durchlaufen, über Sie zu tun, was Sie möchte:
for case let label as UILabel in view.subviews {...}
Swift 4
Adepting mKane Antwort können Sie diesen code verwenden:
Konnten Sie eine
tag
zu IhremUILabel
in der Storyboard-oder programmgesteuert mithilfe:Dann, um es zu finden, verwenden Sie:
let myLabel = view.viewWithTag(1234)