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 anrufen listSubviewsOfView(view) statt listSubviewsOfView(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'
InformationsquelleAutor Casper | 2014-08-20
Schreibe einen Kommentar