2016-04-13 14 views
0

Ich habe den folgenden Code, der basierend auf den abgerufenen Daten Schaltflächen erstellt. Nachdem Schaltflächen erstellt wurden, werden sie zu einem Bildlauf hinzugefügt. Und sie sollten horizontal angezeigt werden.Erstellen und Hinzufügen von Schaltflächen zum Scrollen dynamisch

Ich kann bestätigen, dass es Daten gibt, aber es zeigt seltsame Dinge im Simulator (siehe beigefügten Screenshot). Was ist falsch in meiner Implementierung?

override func viewDidLoad() { 
    super.viewDidLoad() 

    fetchRecipeCategory() 

    for var i = 0; i < self.category.count; i++ { 
     let frame1 = CGRect(x: 20, y: 20 + (index * 45), width: 45, height: 45) 
     let button = UIButton(frame: frame1) 
     button.setTitle("\(category[i].name)", forState: .Normal) 
     button.backgroundColor = UIColor.blackColor() 
     self.categoryScrollView.addSubview(button) 

    } 
    print(category[0].name) 
} 

enter image description here

+2

sieht es so aus, als zeige es 'Optional (" yourData ")'. hast du versucht es auszupacken? –

+0

Guter Fang aber überlappendes Problem bleibt bestehen. Wie kann ich es horizontal gleichmäßig verteilen? –

+0

Sie sollten Ihre Frage bearbeiten und feststellen, dass sich das Problem überschneidet. –

Antwort

1

Sie müssen für jede Taste unterschiedlichen y frame Wert verwenden. Die Erstellung Ihrer Schaltfläche verwendet index für ihren y-Rahmen und Sie haben ihn nicht erhöht.

Da Sie For-Schleife verwenden, könnten Sie i Wert dafür verwenden.

let frame1 = CGRect(x: 20, y: 20 + (i * 45), width: 45, height: 45) 

Dieser Code wird vertikale Liste der Schaltfläche erstellen. Wenn Sie Ihre Taste horizontal auflisten mögen, für jede Taste x frame Wert ändern

let frame1 = CGRect(x: 20 + (i * 45), y: 20, width: 45, height: 45) 

Wie für den Screenshot sieht es so aus, dass der Schaltfläche Titel Optional("data") gesetzt. Wenn Sie wirklich sicher sind, dass Ihre Datenquelle Daten enthält, können Sie sie einfach für Ihren Schaltflächentitel auspacken. Besser, wenn Sie optionale Bindung dafür verwenden.

+0

Danke. Was ist optionale Bindung? wie 'wenn _ _ Wert {}' oder Wache? –

+0

Verwendung von 'wenn let' sollte in Ihrem Fall ausreichen. Wenn Sie an dem Vergleich zwischen diesen beiden interessiert sind, sollten Sie http://stackoverflow.com/questions/32256834/swift-2-0-guard-vs-if-let lesen –

Verwandte Themen